Logs on 2022-12-28 (liberachat/#haskell)
| 00:04:38 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 246 seconds) |
| 00:04:43 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Ping timeout: 260 seconds) |
| 00:04:49 | → | Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
| 00:05:39 | → | freeside joins (~mengwong@103.252.202.159) |
| 00:06:02 | × | money_ quits (~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) (Quit: late) |
| 00:07:00 | → | money_ joins (~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) |
| 00:10:05 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds) |
| 00:10:12 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:10:12 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:10:12 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:10:28 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 268 seconds) |
| 00:13:14 | → | v0id_ptr joins (~adrift@user/ptr-frac7al/x-0038398) |
| 00:22:08 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 00:23:15 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:23:35 | → | freeside joins (~mengwong@103.252.202.159) |
| 00:24:11 | × | TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving) |
| 00:24:50 | × | money_ quits (~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) (Remote host closed the connection) |
| 00:26:18 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:28:02 | → | money_ joins (~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) |
| 00:35:14 | × | money_ quits (~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) (Remote host closed the connection) |
| 00:35:26 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds) |
| 00:42:50 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:47:22 | × | CiaoSen quits (~Jura@p200300c95719fa002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 00:50:56 | → | jmorris joins (uid537181@id-537181.uxbridge.irccloud.com) |
| 00:51:02 | <jle``> | i can't seem to get my day 16 to take less than 45 minutes lol |
| 00:51:32 | <jle``> | oops wrong channel |
| 00:53:08 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
| 00:53:14 | <mauke[m]> | part 1 or part 2? |
| 00:53:49 | <mauke[m]> | I couldn't figure out part 2, so I brute forced it. takes about 34 seconds on my laptop. part 1 was only about 0.3 seconds, though |
| 00:54:38 | <jle``> | part 2 :) i used the same algorith for both parts, just polymorphic over the position container (Identity vs. data V2 a = V2 a a) |
| 00:55:17 | <mauke[m]> | ... position container? |
| 00:55:49 | × | Guest323 quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds) |
| 00:56:36 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 00:56:46 | <jle``> | well my search state is Position and set of pipes open |
| 00:57:09 | <jle``> | but i parameterized over a functor, SearchState f = S (f Point) (Set Pipe) |
| 00:57:13 | <jle``> | so for part 1 f is Identity |
| 00:57:17 | <jle``> | and part 2 it's a 2-vector |
| 00:57:31 | <mauke[m]> | oh, that sounds fancy |
| 00:57:42 | <jle``> | it was more out of laziness :) |
| 00:57:56 | <jle``> | the human kind, not the haskell kind |
| 00:58:24 | <jle``> | so i could re-use the same algorithm for part 2 with minimal change |
| 00:58:25 | <mauke[m]> | I have: process :: (Int -> Int -> Int) -> (Int -> Int) -> Int -> Int -> [Int] -> Int |
| 00:58:30 | <jle``> | but it leads to .. very long search time |
| 00:59:21 | <mauke[m]> | couldn't reuse the algorithm because it assumes you always move to an unopened valve at each step |
| 00:59:33 | → | bjourne joins (~bjorn@94.191.136.87.mobile.tre.se) |
| 00:59:44 | <jle``> | oh, i thought that assumption wasn't valid in the part 1, either? |
| 00:59:51 | <mauke[m]> | but for part2 that doesn't necessarily produce the optimal solution because it might be better for one player to sit still |
| 01:00:23 | <jle``> | for part 1 i originally programmed in "don't move to an opened valve" and that was the main reason i didn't solve it that night |
| 01:00:56 | <mauke[m]> | I can't even represent a move to an opened valve |
| 01:01:06 | <mauke[m]> | my fundamental operation is "move to valve and open" |
| 01:01:17 | <jle``> | D: |
| 01:02:21 | × | johnjaye quits (~pi@173.209.64.74) (Ping timeout: 265 seconds) |
| 01:02:51 | → | johnjaye joins (~pi@173.209.64.74) |
| 01:03:37 | <glguy> | I use my part 1 to build part 2 |
| 01:04:12 | <mauke[m]> | so did I, but in a dumb way |
| 01:04:23 | <glguy> | And the thing runs in about 128ms |
| 01:04:59 | × | ft quits (~ft@i59F541CC.versanet.de) (Ping timeout: 264 seconds) |
| 01:05:23 | <mauke[m]> | for part 2, I partition the set of valves into two subsets in all possible ways, then solve them separately |
| 01:05:52 | <glguy> | I pre-solve all the ways |
| 01:06:12 | <jle``> | mauke[m]: ooh |
| 01:06:29 | <jle``> | and then you compare the best? |
| 01:07:17 | <mauke[m]> | maximum $ map (\(vs1, vs2) -> processPart vs1 + processPart vs2) valveDist |
| 01:07:26 | <mauke[m]> | hey, where's my backslashes |
| 01:07:46 | <jle``> | at this point i'm surprised my solution was even viable now |
| 01:07:51 | <mauke[m]> | `maximum $ map (\(vs1, vs2) -> processPart vs1 + processPart vs2) valveDist` |
| 01:08:09 | <mauke[m]> | I wrote Markdown. hope it looks sensible on the IRC side |
| 01:08:25 | <geekosaur> | even the first one looked sensible here |
| 01:09:25 | <glguy> | https://ibb.co/m9J3ZN0 |
| 01:09:37 | <mauke[m]> | where valveDist = filter (uncurry (<)) (subseq valves) |
| 01:10:58 | geekosaur | suddenly wonders when they got rid of the control-q stuff |
| 01:10:59 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:05 | <glguy> | mauke[m]: by first computing all the possible subsequences you can avoid checking impossible ones or recomputing costs |
| 01:11:25 | <glguy> | The control q stuff was working earlier this month |
| 01:11:52 | <glguy> | I was surprised to see it pop up; I implemented support for it earlier because irccloud can use it |
| 01:11:55 | × | xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 256 seconds) |
| 01:12:08 | <mauke[m]> | backslash test: map (\(x, y) -> x + y) |
| 01:12:16 | <mauke[m]> | weird |
| 01:12:35 | <geekosaur> | I have a script for hexchat ut it has the side effect of breaking tab notifications, so I disabled it |
| 01:12:53 | <mauke[m]> | glguy: what do you mean by impossible? |
| 01:13:38 | <glguy> | There are valve sets one player couldn't open in time, depending on the map |
| 01:14:04 | <jle``> | thanks for the tips :) |
| 01:14:52 | <glguy> | So it'd be a waste to ask multiple times on different subsets of valves where the player doesn't open all the valves in the subset |
| 01:15:34 | <mauke[m]> | I don't see how that follows |
| 01:17:06 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:24 | <glguy> | Like suppose theres a graph with nodes ABC and the optimal valve opening on that graph involves opening A then B, we wouldn't want to ask how expensive it is to open the subset AB and also ABC (which would give the same asnswer as asking about AB) |
| 01:17:44 | × | acidjnk quits (~acidjnk@p200300d6e7137a53b8fa7112b5541570.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 01:18:24 | → | fizbin joins (~fizbin@user/fizbin) |
| 01:18:35 | <mauke[m]> | how does that save me work? |
| 01:18:46 | <glguy> | depends if you were doing both queries or not |
| 01:18:56 | <glguy> | if you were then it saves a wasted query |
| 01:19:23 | <glguy> | also doing them as separate queries doesn't allow subsets that have a common prefix from sharing work |
| 01:19:47 | × | thongpv quits (~thongpv87@2001:ee0:54ab:430:ca58:16f9:bb47:d3ca) (Read error: Connection reset by peer) |
| 01:20:31 | <mauke[m]> | none of this makes sense to me |
| 01:20:54 | <glguy> | you were mapping a function over all the pairs of disjoint subsets of valves? |
| 01:21:26 | → | thongpv joins (~thongpv87@113.187.220.176) |
| 01:21:26 | <mauke[m]> | if I have a subset {A, B, D} and I compute an optimal valve path AB (with D being unreachable), then adding C to the set does not necessarily extend AB |
| 01:21:51 | <mauke[m]> | the solution for {A, B, D, C} might be ACD or something |
| 01:22:01 | <glguy> | if the optimal route through {ABC} ignores D, then no sense in asking about ABD, only need to ask about AB |
| 01:22:06 | <glguy> | err |
| 01:22:10 | <glguy> | if the optimal route through {ABD} ignores D, then no sense in asking about ABD, only need to ask about AB |
| 01:22:52 | <mauke[m]> | well yeah. if you start with the optimal route. |
| 01:22:59 | <glguy> | so instead of asking individually about all the different subsets you can just enumerate all the reachable subsets |
| 01:23:07 | <glguy> | as a single graph search |
| 01:23:15 | × | thongpv87 quits (~thongpv87@2001:ee0:54ab:430:ca58:16f9:bb47:d3ca) (Ping timeout: 256 seconds) |
| 01:24:44 | <mauke[m]> | are we talking about subsets of subsets now? |
| 01:25:13 | <glguy> | no, subsets of the whole graph |
| 01:25:19 | <glguy> | https://github.com/glguy/advent/blob/main/solutions/src/2022/16.hs#L68-L81 |
| 01:27:10 | × | tremon quits (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
| 01:28:36 | <mauke[m]> | TIL about ImportQualifiedPost |
| 01:29:25 | <mauke[m]> | first thing that confuses me: the Map Int [(Int, Int, Int)] type |
| 01:29:39 | × | thongpv quits (~thongpv87@113.187.220.176) (Ping timeout: 260 seconds) |
| 01:29:54 | <mauke[m]> | what is flow doing in there? |
| 01:30:09 | <glguy> | it's the flow value of the valve at that room |
| 01:30:25 | <glguy> | You only move to a room to open the valve there |
| 01:31:28 | → | thongpv joins (~thongpv87@14.246.240.163) |
| 01:32:01 | <mauke[m]> | but why is it attached to the arrows and not the nodes? |
| 01:32:13 | <mauke[m]> | also, which room? |
| 01:32:38 | <glguy> | to avoid doing a second lookup for the valve value as you always need that information when moving to the room containing the vavle |
| 01:32:54 | <mauke[m]> | your map describes the relationships between rooms, no? |
| 01:33:30 | <glguy> | for each "room/valve" it's a list of all the other rooms reachable and the time it would take to move directly to that room |
| 01:34:25 | <glguy> | having separate maps would make you do twice as many Map.lookups |
| 01:34:34 | <mauke[m]> | does that mean each flow value is duplicated n times in your data structure (where n = number of elements)? |
| 01:34:39 | <glguy> | yeah |
| 01:35:11 | <mauke[m]> | btw, what's a SmallSet? |
| 01:35:23 | <glguy> | it's a Set but represented with an Int using bit operations |
| 01:35:42 | <glguy> | I should remove all the Map lookups and just tie the knot |
| 01:36:11 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 265 seconds) |
| 01:36:56 | <mauke[m]> | ah, I didn't assume N < 64 |
| 01:37:39 | <mauke[m]> | I also didn't bother with renumbering: valve = (\a b -> (ord a - ord 'A') * 26 + ord b - ord 'A') <$> satisfy isAsciiUpper <*> satisfy isAsciiUpper |
| 01:37:40 | <mauke[m]> | :-) |
| 01:37:56 | <glguy> | renumbering saved about 5x |
| 01:38:39 | <glguy> | at least in an earlier version |
| 01:39:58 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 01:40:15 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 01:43:39 | mauke[m] | stares hard at the code |
| 01:48:59 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 01:49:18 | <mauke[m]> | ooh. I think I understand exactly what solve is computing |
| 01:49:55 | → | freeside joins (~mengwong@103.252.202.159) |
| 01:49:56 | <glguy> | Help me understand what you found confusing, or what I didn't adequately explain so I can update the comments? |
| 01:50:07 | <mauke[m]> | and I'm pretty sure you're coalescing states by using room sets as keys |
| 01:50:47 | <glguy> | yes, that happens and I pick the larger of them with 'max' |
| 01:50:47 | <mauke[m]> | speaking of comments: line 71, s/values/valves/ ? |
| 01:51:01 | <mauke[m]> | wouldn't it be more efficient to use an IntSet? |
| 01:51:02 | <glguy> | oops |
| 01:51:07 | <mauke[m]> | er, IntMap |
| 01:51:24 | <glguy> | My experience so far is that IntMap is only faster for lookups and not updates |
| 01:51:54 | <glguy> | Any time I try swapping out a Map for IntMap this year of aoc I got worse times |
| 01:53:26 | <EvanR> | I've had good results for Map just for the convenience factor |
| 01:53:57 | <EvanR> | using IntMap when it's not an Int has non zero pain in the ass cost |
| 01:56:41 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:12:11 | <mauke[m]> | glguy: s/verticies/vertices/g |
| 02:12:42 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 02:16:11 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds) |
| 02:16:19 | × | fizbin quits (~fizbin@user/fizbin) (Remote host closed the connection) |
| 02:16:36 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 02:16:37 | → | fizbin joins (~fizbin@user/fizbin) |
| 02:18:27 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:19:03 | <romes[m]> | Hey! I'm writing some type level code using type families, but I've encountered a weird behaviour: |
| 02:19:03 | <romes[m]> | With the constraint `8 ~ SizeOf (DSetBinding 1 (n-1) ys)` I get an error `Could not deduce (SizeOf (DSetBinding 1 0 β) ~ 8)`; However, the constraint `9 ~ SizeOf (DSetBinding 1 (n-1) ys)` results in the (expected) error `Could not deduce (9 ~ 8)`. If I write 7 instead of 9 I also get the nice `Could not deduce (7 ~ 8)` |
| 02:19:11 | <romes[m]> | Any clues as to what it might be? |
| 02:23:04 | → | notzmv joins (~zmv@user/notzmv) |
| 02:27:16 | × | beefbambi quits (~beefbambi@183.82.25.109) (Read error: Connection reset by peer) |
| 02:29:49 | <EvanR> | what's β |
| 02:30:17 | → | beefbambi joins (~beefbambi@183.82.25.109) |
| 02:32:39 | × | beefbambi quits (~beefbambi@183.82.25.109) (Read error: Connection reset by peer) |
| 02:34:12 | <romes[m]> | something that makes it work :) if I print it out with TypeError it shows it but it’s not relevant I think |
| 02:34:49 | → | beefbambi joins (~beefbambi@183.82.25.109) |
| 02:34:52 | <EvanR> | it works? great |
| 02:41:24 | × | beefbambi quits (~beefbambi@183.82.25.109) (Read error: Connection reset by peer) |
| 02:41:59 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.7.1) |
| 02:42:21 | → | beefbambi joins (~beefbambi@183.82.25.109) |
| 02:48:20 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) |
| 02:52:22 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 02:52:22 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 02:52:22 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:54:29 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 256 seconds) |
| 02:58:14 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 03:09:39 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 03:10:31 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:10:31 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:10:31 | finn_elija | is now known as FinnElija |
| 03:18:16 | → | freeside joins (~mengwong@103.252.202.159) |
| 03:20:43 | × | td_ quits (~td@83.135.9.15) (Ping timeout: 260 seconds) |
| 03:22:29 | → | td_ joins (~td@83.135.9.57) |
| 03:22:30 | × | beefbambi quits (~beefbambi@183.82.25.109) (Read error: Connection reset by peer) |
| 03:24:03 | → | beefbambi joins (~beefbambi@183.82.25.109) |
| 03:29:54 | → | razetime joins (~quassel@49.207.230.181) |
| 03:33:20 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 03:41:27 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:4e8c::) (Quit: The Lounge - https://thelounge.chat) |
| 03:42:50 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:4e8c::) |
| 03:45:00 | × | jero98772 quits (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Remote host closed the connection) |
| 04:04:59 | × | bjourne quits (~bjorn@94.191.136.87.mobile.tre.se) (Ping timeout: 248 seconds) |
| 04:09:15 | × | son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 260 seconds) |
| 04:12:45 | × | ddellacosta quits (~ddellacos@143.244.47.100) (Ping timeout: 260 seconds) |
| 04:22:06 | × | Kaipei quits (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 272 seconds) |
| 04:23:22 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 272 seconds) |
| 04:32:27 | × | razetime quits (~quassel@49.207.230.181) (Ping timeout: 260 seconds) |
| 04:37:32 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 04:38:18 | × | Umeaboy quits (~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving) |
| 04:42:45 | × | thongpv quits (~thongpv87@14.246.240.163) (Ping timeout: 265 seconds) |
| 04:51:04 | → | freeside joins (~mengwong@103.252.202.159) |
| 04:51:38 | × | beefbambi quits (~beefbambi@183.82.25.109) (Read error: Connection reset by peer) |
| 04:51:46 | → | dsrt^ joins (~dsrt@76.145.185.103) |
| 04:52:30 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 04:53:08 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 04:53:26 | → | beefbambi joins (~beefbambi@183.82.25.109) |
| 04:55:47 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
| 04:55:55 | → | thongpv joins (~thongpv87@2402:9d80:3ef:b5ba:d843:66e0:e437:37c3) |
| 04:58:12 | × | beefbambi quits (~beefbambi@183.82.25.109) (Read error: Connection reset by peer) |
| 04:58:58 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 05:02:19 | → | money_ joins (~money@2601:40:c580:8530:d025:7b6d:55a0:598c) |
| 05:02:38 | × | money_ quits (~money@2601:40:c580:8530:d025:7b6d:55a0:598c) (Client Quit) |
| 05:03:26 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 05:03:45 | → | beefbambi joins (~beefbambi@183.82.25.109) |
| 05:07:07 | → | freeside joins (~mengwong@103.252.202.159) |
| 05:15:53 | → | johnw joins (~johnw@2600:1700:cf00:db0:68bc:4dc1:caa4:f545) |
| 05:18:11 | × | beefbambi quits (~beefbambi@183.82.25.109) (Ping timeout: 264 seconds) |
| 05:22:58 | → | razetime joins (~quassel@49.207.230.181) |
| 05:23:16 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 05:28:17 | × | thongpv quits (~thongpv87@2402:9d80:3ef:b5ba:d843:66e0:e437:37c3) (Quit: Leaving) |
| 05:34:13 | × | v0id_ptr quits (~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds) |
| 05:35:34 | × | johnw quits (~johnw@2600:1700:cf00:db0:68bc:4dc1:caa4:f545) (Quit: ZNC - http://znc.in) |
| 05:52:26 | _\_ | is now known as ___ |
| 05:54:26 | → | titibandit joins (~titibandi@xdsl-89-0-163-79.nc.de) |
| 06:05:02 | → | mbuf joins (~Shakthi@49.204.113.226) |
| 06:13:41 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 268 seconds) |
| 06:18:13 | → | son0p joins (~ff@2604:3d08:5b7f:5540:98a9:2169:15a1:4c7f) |
| 06:35:44 | × | razetime quits (~quassel@49.207.230.181) (Ping timeout: 272 seconds) |
| 06:38:17 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 06:43:30 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 06:51:13 | → | trev joins (~trev@user/trev) |
| 06:54:42 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 252 seconds) |
| 06:56:57 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 06:57:16 | → | kritzefitz joins (~kritzefit@debian/kritzefitz) |
| 06:58:03 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 06:58:23 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Client Quit) |
| 07:00:57 | → | mei joins (~mei@user/mei) |
| 07:03:47 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 07:14:54 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 07:31:58 | → | johnw joins (~johnw@2600:1700:cf00:db0:e590:8ce7:d874:8b6) |
| 07:34:30 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:868e:d6ba:423c:8634) |
| 07:35:58 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:38:46 | → | Kaipei joins (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 07:39:49 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 07:47:14 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 07:47:40 | → | ph88 joins (~ph88@2001:1c05:2412:3100:2cfc:2cfb:90cd:d349) |
| 07:49:58 | × | Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 07:53:16 | × | titibandit quits (~titibandi@xdsl-89-0-163-79.nc.de) (Remote host closed the connection) |
| 07:56:17 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 07:58:47 | → | titibandit joins (~titibandi@xdsl-89-0-163-79.nc.de) |
| 08:00:22 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 08:13:03 | × | ph88 quits (~ph88@2001:1c05:2412:3100:2cfc:2cfb:90cd:d349) (Quit: Leaving) |
| 08:17:42 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:25:54 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 08:35:34 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 08:37:30 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 256 seconds) |
| 08:42:12 | → | cyphase joins (~cyphase@user/cyphase) |
| 08:44:10 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 08:45:12 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 08:52:22 | → | freeside joins (~mengwong@122.11.214.85) |
| 08:57:22 | × | jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:58:41 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 09:00:03 | × | ElliotAlderson[m quits (~elliotal_@2001:470:69fc:105::bb21) (Quit: You have been kicked for being idle) |
| 09:01:10 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 09:04:10 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 09:19:02 | → | acidjnk joins (~acidjnk@p200300d6e7137a537d0b13f896941cd5.dip0.t-ipconnect.de) |
| 09:33:37 | → | mmhat joins (~mmh@p200300f1c721be6dee086bfffe095315.dip0.t-ipconnect.de) |
| 09:37:39 | → | aaronv joins (~aaronv@user/aaronv) |
| 09:38:04 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 09:42:25 | → | Guest323 joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 09:45:27 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:57:47 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Remote host closed the connection) |
| 09:57:47 | × | freeside quits (~mengwong@122.11.214.85) (Ping timeout: 264 seconds) |
| 10:02:39 | × | phma quits (phma@2001:5b0:211f:fc48:f1c3:2878:2421:3588) (Read error: Connection reset by peer) |
| 10:03:33 | → | phma joins (phma@2001:5b0:210d:5d58:64bb:4721:a872:cb87) |
| 10:04:22 | <mauke[m]> | glguy: looking at the 'fw' function, doesn't it assign a self-distance of 2 to all rooms? that is, distances M.! (v, v) == 2 for all v |
| 10:05:42 | <mauke[m]> | and if you skip those entries, wouldn't `Map.lookup (i,k) dists` then be invariant in the innermost loop and could be pulled out? |
| 10:08:10 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 10:08:41 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 10:15:53 | <romes[m]> | <EvanR> "it works? great" <- oh no I phrased it wrong. I have a type family DSetBinding that when applied to those arguments reduces to `8`. When I write the constraint with `(8 ~ DSetBinding 1 0 x)` it’s as if the family can’t reduce, but if I switch 8 to another number like 9, I get the message “Can’t satisfy 9 ~ 8” |
| 10:16:14 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 10:16:18 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 10:16:35 | <romes[m]> | so I know that the type family reduces, but when I compare it to the value it reduces to its like it stops working! |
| 10:16:37 | <romes[m]> | :) |
| 10:17:31 | × | libertyprime quits (~libertypr@203.96.203.167) (Ping timeout: 252 seconds) |
| 10:20:35 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 264 seconds) |
| 10:23:03 | × | Guest323 quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 10:23:37 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 10:25:29 | → | __monty__ joins (~toonn@user/toonn) |
| 10:31:20 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
| 10:32:04 | → | freeside joins (~mengwong@122.11.214.85) |
| 10:33:23 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 10:34:02 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:34:12 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 10:38:34 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 10:41:24 | → | fserucas joins (~fserucas@a85-138-107-42.cpe.netcabo.pt) |
| 10:43:22 | × | freeside quits (~mengwong@122.11.214.85) (Read error: Connection reset by peer) |
| 10:43:59 | → | coot joins (~coot@213.134.171.3) |
| 10:58:18 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) |
| 11:02:34 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Ping timeout: 252 seconds) |
| 11:06:33 | → | xff0x joins (~xff0x@ai071162.d.east.v6connect.net) |
| 11:14:28 | × | titibandit quits (~titibandi@xdsl-89-0-163-79.nc.de) (Remote host closed the connection) |
| 11:16:50 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 11:18:29 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 11:20:30 | → | freeside joins (~mengwong@103.252.202.159) |
| 11:25:23 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 264 seconds) |
| 11:30:35 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds) |
| 11:32:00 | → | freeside joins (~mengwong@103.252.202.159) |
| 11:35:31 | → | money__ joins (~money@2601:40:c580:8530:bc04:ad9b:97b3:650b) |
| 11:35:39 | × | acidjnk quits (~acidjnk@p200300d6e7137a537d0b13f896941cd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 12:05:18 | <mauke[m]> | huh. my "connection expansion" function might actually be a variant of Dijkstra's algorithm |
| 12:11:35 | → | acidjnk joins (~acidjnk@p54ad5adb.dip0.t-ipconnect.de) |
| 12:14:47 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 12:15:14 | × | freeside quits (~mengwong@103.252.202.159) (Quit: brb) |
| 12:15:47 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 12:17:44 | × | acidjnk quits (~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 12:18:23 | → | bontaq joins (~user@71.27.75.65) |
| 12:18:41 | → | Guest32 joins (~Guest32@176.122.87.241) |
| 12:18:52 | <Guest32> | hello |
| 12:19:40 | <Guest32> | can i ask a question about yesodweb? |
| 12:19:56 | <chreekat> | yep |
| 12:20:07 | <Guest32> | I need to wrap the select field in a div. Is there an easier way than custom field? |
| 12:21:50 | <Guest32> | my css framework wrap some fields in divs |
| 12:23:38 | × | irrgit__ quits (~irrgit@146.70.27.250) (Remote host closed the connection) |
| 12:24:57 | → | irrgit__ joins (~irrgit@176.113.74.74) |
| 12:26:19 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 12:26:48 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 12:29:11 | × | fserucas quits (~fserucas@a85-138-107-42.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
| 12:48:48 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 12:49:00 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 12:50:03 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 12:53:04 | → | dextaa9 joins (~DV@user/dextaa) |
| 12:54:18 | × | Guest32 quits (~Guest32@176.122.87.241) (Quit: Client closed) |
| 12:54:51 | × | dextaa quits (~DV@user/dextaa) (Ping timeout: 252 seconds) |
| 12:54:51 | dextaa9 | is now known as dextaa |
| 12:55:07 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 12:59:44 | × | kjak quits (~kjak@pool-72-66-75-40.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
| 13:00:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) |
| 13:01:59 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 13:02:14 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 13:04:23 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Ping timeout: 246 seconds) |
| 13:07:23 | → | califax joins (~califax@user/califx) |
| 13:11:07 | <kjlid[m]> | Say I have a typeclass `HasEntry t` with a bunch of functions to retreive some fields from a data structure - would it make sense to have a `toEntry :: t -> Entry` if I want to have the ability to copy the data and replace some fields in it before I shove it into a database? |
| 13:11:35 | <kjlid[m]> | I don't know what the idiomatic way to do that in Haskell is |
| 13:12:25 | <kjlid[m]> | Or would it make more sense to have a DAO-like type? |
| 13:12:34 | <mauke[m]> | why do you have a typeclass? |
| 13:13:41 | <kjlid[m]> | As a learning exercise |
| 13:14:31 | <kjlid[m]> | And I heard you guys like abstractions so I figured I'd add some typeclasses to impress you |
| 13:14:53 | × | money__ quits (~money@2601:40:c580:8530:bc04:ad9b:97b3:650b) (Quit: late) |
| 13:15:47 | <mauke[m]> | typeclasses are but one way to abstract things |
| 13:16:33 | → | kjak joins (~kjak@pool-72-66-75-40.washdc.fios.verizon.net) |
| 13:17:50 | <mauke[m]> | I can't tell you what would make sense because I can't form a picture of your code from your description |
| 13:17:52 | <mauke[m]> | it's too vague for me |
| 13:17:59 | <ggVGc> | typeclasses are just fancy dictionaries :) |
| 13:20:14 | <mauke[m]> | in much the same way that function application is just fancy goto |
| 13:21:28 | <kjlid[m]> | https://paste.tomsmeding.com/QZ1azRNB <- I was thinking of doing something like this. See like 23-28 |
| 13:21:32 | <kjlid[m]> | err, line 23-28 |
| 13:22:27 | <kjlid[m]> | Yes I know this does not compile |
| 13:24:25 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 13:24:51 | <mauke[m]> | this looks like entry is just a tuple/record of 5 fields |
| 13:26:05 | <mauke[m]> | in which case I wouldn't make addEntry polymorphic; I'd just have it take an Entry |
| 13:27:04 | <mauke[m]> | anyone who wants to use it with a different type can write their own conversion function that wraps the necessary pieces in an Entry |
| 13:28:16 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 13:28:37 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 13:29:10 | <kjlid[m]> | Right |
| 13:36:11 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 13:38:33 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 13:39:59 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 13:46:55 | → | tremon joins (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) |
| 13:48:35 | <JonathanWatson[m> | Does anyone know how to set GHC runtime debug options in Cabal? My GHC options end with "-debug +RTS -DL -RTS" but I get an error saying "the flag -DL requires the program to be built with -debug" |
| 13:51:05 | <mauke[m]> | can you even build ghc with cabal? |
| 13:52:41 | → | cheater joins (~Username@user/cheater) |
| 13:54:24 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 13:54:57 | <JonathanWatson[m> | Well I am trying to build an executable using custom GHC options rather than build GHC itself |
| 13:55:37 | <JonathanWatson[m> | Using these options https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html?highlight=dl#rts-options-for-hackers-debuggers-and-over-interested-souls |
| 13:56:17 | <JonathanWatson[m> | It could be that "the program" is referring to GHC though |
| 13:56:44 | → | Sciencentistguy2 joins (~sciencent@hacksoc/ordinary-member) |
| 13:56:52 | <glguy> | Are you using -with-rtsopts ? |
| 13:58:16 | <JonathanWatson[m> | Oh no I am using +RTS and -RTS since it didn't work when I tried that with the option on the library, although it should work now that I am only changing the GHC options for the executable |
| 13:58:34 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds) |
| 13:58:34 | Sciencentistguy2 | is now known as Sciencentistguy |
| 13:59:01 | <mauke[m]> | if you're not trying to debug ghc, why are you passing runtime debugging options to ghc? |
| 13:59:03 | <glguy> | mauke[m]: yes it assigns 2 to the self distances because I didn't add zero entries to the self distances, but I'll have to look to see what the consequence is to the shortest path implementation |
| 13:59:31 | <JonathanWatson[m> | glguy: thank you that worked! |
| 13:59:53 | <JonathanWatson[m> | mauke[m]: I am testing a library that uses GHC as a library for dynamic software updating |
| 14:00:03 | <glguy> | I had the 0 cost entries at one point, but since I don't need them I ended up removing them to save on line count |
| 14:00:16 | <mauke[m]> | ooh, funky |
| 14:01:58 | × | fizbin quits (~fizbin@user/fizbin) (Remote host closed the connection) |
| 14:02:15 | <JonathanWatson[m> | oh well it built but when I run it, it says "bad RTS option: -DL" |
| 14:02:17 | → | fizbin joins (~fizbin@user/fizbin) |
| 14:02:56 | <JonathanWatson[m> | with "-with-rtsopts=-DL" |
| 14:03:36 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 14:05:11 | <JonathanWatson[m> | but it does recognise the option since it says "unexpected RTS argument: DL" when I remove the hyphen |
| 14:05:46 | <glguy> | Sounds like you didn't build a debug target |
| 14:06:26 | <JonathanWatson[m> | oh it works with "-with-rtsopts=-Dl" |
| 14:06:37 | JonathanWatson[m | uploaded an image: (8KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/hiJhcJOhNvweGLPceBqbSmbX/image.png > |
| 14:06:46 | <JonathanWatson[m> | it's just the verbose one that doesn't work |
| 14:08:20 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
| 14:11:05 | → | Guest91 joins (~Guest91@dyndsl-037-138-067-145.ewe-ip-backbone.de) |
| 14:12:28 | → | kenran joins (~user@user/kenran) |
| 14:12:49 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 14:13:22 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 14:13:32 | <JonathanWatson[m> | ok that's because I'm reading a later version of the docs |
| 14:15:59 | → | bjourne joins (~bjorn@94.191.136.87.mobile.tre.se) |
| 14:17:08 | → | freeside joins (~mengwong@103.252.202.159) |
| 14:17:35 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 246 seconds) |
| 14:18:39 | <freeside> | so, i've got my Megaparsec-based parser up and running, and for my next trick, I'm refactoring and simplifying. I want to use one of the available expression parsers, but ... |
| 14:18:59 | <freeside> | ... do I want Control.Monad.Combinators.Expr? Text.Parser.Expression? Text.Parsec.Expr? |
| 14:20:08 | <freeside> | they all seem to implement expr, term, table, binary, prefix, postfix |
| 14:25:49 | <freeside> | i'm going with Control.Monad.Combinators.Expr from parser-combinators, but only because it shares an author with megaparsec; I trust my sleuthing will bear fruit |
| 14:35:42 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
| 14:35:45 | <ncf> | yes that's the intended way https://markkarpov.com/post/megaparsec-7.html#parsercombinators-grows-megaparsec-shrinks |
| 14:36:32 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 14:37:48 | <freeside> | ah, thank you, appreciate the history |
| 14:38:17 | <ncf> | i suspect the other ones just wouldn't work with megaparsec anyway |
| 14:41:15 | <freeside> | very well, then i shall submit a PR for https://hackage.haskell.org/package/megaparsec-9.3.0#related-packages lol |
| 14:42:39 | → | money__ joins (~money@64-145-79-171.jfk.as54203.net) |
| 14:42:42 | × | bontaq quits (~user@71.27.75.65) (Read error: Connection reset by peer) |
| 14:44:40 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 14:47:07 | <freeside> | i wonder why the decision was made not to re-export them from the Text.Megaparsec module namespace |
| 14:48:28 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:51:14 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 14:51:55 | <geekosaur> | that's reserved for when they reimplement them for optimization, I think |
| 14:52:57 | × | Guest91 quits (~Guest91@dyndsl-037-138-067-145.ewe-ip-backbone.de) (Quit: Client closed) |
| 14:53:38 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 14:53:53 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 15:00:04 | → | n0den1te joins (~~.~@2401:4900:1c28:5d65:f513:13cc:6745:d0c4) |
| 15:00:42 | → | jargon joins (~jargon@174-22-197-118.phnx.qwest.net) |
| 15:02:24 | <bjourne> | how can you accomplish exit early in a monad? e.g: if (a) { doA(); return; } if (b) { doB(); return } ... |
| 15:03:07 | <geekosaur> | you can't; it's a large expression, not really a set of procedures |
| 15:03:31 | <geekosaur> | closest you get is the Cont or ContT monads but those will seriously warp your brain |
| 15:04:11 | <freeside> | why not guard / when / <|> |
| 15:04:16 | <freeside> | https://hackage.haskell.org/package/base-4.17.0.0/docs/Control-Monad.html#g:6 |
| 15:04:20 | <bjourne> | i can accomplish it, but only using deeply nested if-else expressions |
| 15:04:23 | <geekosaur> | those work in some cases |
| 15:05:08 | <freeside> | maybe refactor to take advantage of pattern-matching or MultiWayIf? |
| 15:05:33 | ← | n0den1te parts (~~.~@2401:4900:1c28:5d65:f513:13cc:6745:d0c4) () |
| 15:06:08 | <freeside> | the "deeply nested if-else expressions" antipattern is something i'm trying to address with an embeddable DMN DSL, btw, which is coincidentally the subject of my current refactoring |
| 15:06:44 | × | money__ quits (~money@64-145-79-171.jfk.as54203.net) (Changing host) |
| 15:06:44 | → | money__ joins (~money@user/polo) |
| 15:06:44 | ChanServ | sets mode +o litharge |
| 15:06:45 | litharge | sets mode +b *!*@64.145.79.171 |
| 15:06:49 | → | fizbin joins (~fizbin@user/fizbin) |
| 15:06:50 | → | n0den1te joins (~n0den1te@223.178.84.197) |
| 15:06:56 | litharge | sets mode -o litharge |
| 15:07:36 | <freeside> | beyond a certain complexity, decision trees really want to be decision tables |
| 15:12:49 | → | fserucas joins (~fserucas@a85-138-107-42.cpe.netcabo.pt) |
| 15:27:36 | → | money___ joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 15:28:09 | × | money__ quits (~money@user/polo) (Ping timeout: 256 seconds) |
| 15:28:29 | × | dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection) |
| 15:32:57 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 15:34:25 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 15:34:43 | → | beefbambi joins (~beefbambi@49.204.133.80) |
| 15:38:29 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 15:43:07 | → | ddellacosta joins (~ddellacos@143.244.47.68) |
| 15:44:08 | → | razetime joins (~quassel@49.207.196.133) |
| 15:47:29 | × | Sauvin quits (~sauvin@user/Sauvin) (Ping timeout: 246 seconds) |
| 15:51:56 | × | razetime quits (~quassel@49.207.196.133) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 15:54:36 | → | Sauvin joins (~sauvin@user/Sauvin) |
| 15:54:47 | × | beefbambi quits (~beefbambi@49.204.133.80) (Read error: Connection reset by peer) |
| 15:55:12 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 15:55:21 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
| 15:55:28 | → | beefbambi joins (~beefbambi@49.204.133.80) |
| 15:55:36 | → | razetime joins (~quassel@49.207.196.133) |
| 15:59:21 | → | sayola joins (~sayola@dslb-002-201-085-035.002.201.pools.vodafone-ip.de) |
| 15:59:23 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 246 seconds) |
| 16:03:29 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 16:07:10 | × | Sauvin quits (~sauvin@user/Sauvin) (Quit: Leaving) |
| 16:07:55 | → | Sauvin joins (~sauvin@user/Sauvin) |
| 16:09:00 | × | money___ quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: late) |
| 16:10:48 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 16:10:58 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 16:17:29 | × | beefbambi quits (~beefbambi@49.204.133.80) (Ping timeout: 260 seconds) |
| 16:17:46 | → | trev_ joins (~trev@109.252.35.99) |
| 16:18:21 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 16:19:59 | × | cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds) |
| 16:20:57 | × | trev quits (~trev@user/trev) (Ping timeout: 255 seconds) |
| 16:24:08 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:868e:d6ba:423c:8634) (Quit: WeeChat 2.8) |
| 16:24:56 | jpds3 | is now known as jpds |
| 16:29:13 | → | notzmv joins (~zmv@user/notzmv) |
| 16:39:56 | → | money__ joins (~money@2601:40:c580:8530:9c03:7900:f37d:8622) |
| 16:40:22 | × | money__ quits (~money@2601:40:c580:8530:9c03:7900:f37d:8622) (Changing host) |
| 16:40:22 | → | money__ joins (~money@user/polo) |
| 16:40:22 | ChanServ | sets mode +o litharge |
| 16:40:23 | litharge | sets mode +b *!*@2601:40:c580:8530:9c03:7900:f37d:8622 |
| 16:40:34 | litharge | sets mode -o litharge |
| 16:43:36 | × | money__ quits (~money@user/polo) (Client Quit) |
| 16:44:15 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 16:44:41 | → | acidjnk joins (~acidjnk@p200300d6e7137a4229c4b6108dcb2f5b.dip0.t-ipconnect.de) |
| 16:47:30 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 16:48:38 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 16:49:09 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 16:54:03 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 17:00:05 | → | titibandit joins (~titibandi@xdsl-89-0-163-79.nc.de) |
| 17:00:50 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:01:24 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 17:01:25 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 17:01:25 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:01:42 | × | mbuf quits (~Shakthi@49.204.113.226) (Quit: Leaving) |
| 17:05:30 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 17:06:47 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 17:09:47 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 246 seconds) |
| 17:10:05 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 17:11:15 | → | califax joins (~califax@user/califx) |
| 17:11:33 | → | fizbin joins (~fizbin@user/fizbin) |
| 17:15:52 | × | haasn quits (~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 17:17:45 | → | money__ joins (~money@c-73-188-62-22.hsd1.pa.comcast.net) |
| 17:24:30 | × | money__ quits (~money@c-73-188-62-22.hsd1.pa.comcast.net) (Quit: late) |
| 17:25:04 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 17:26:34 | → | econo joins (uid147250@user/econo) |
| 17:31:12 | → | money__ joins (~money@2601:40:c580:8530:215e:3848:10c5:78d9) |
| 17:36:55 | × | trev_ quits (~trev@109.252.35.99) (Remote host closed the connection) |
| 17:36:59 | koz_ | is now known as koz |
| 17:40:41 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 17:41:21 | → | razetime1 joins (~Thunderbi@49.207.196.133) |
| 17:42:27 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 17:53:11 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 17:54:24 | ← | jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection) |
| 17:54:25 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:57:02 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Ping timeout: 246 seconds) |
| 17:57:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) |
| 17:58:32 | × | razetime1 quits (~Thunderbi@49.207.196.133) (Quit: razetime1) |
| 17:58:35 | × | razetime quits (~quassel@49.207.196.133) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 17:59:50 | → | razetime joins (~Thunderbi@49.207.196.133) |
| 18:01:00 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 272 seconds) |
| 18:05:10 | × | razetime quits (~Thunderbi@49.207.196.133) (Quit: razetime) |
| 18:12:33 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:14:15 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 18:25:20 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 246 seconds) |
| 18:27:37 | × | money__ quits (~money@2601:40:c580:8530:215e:3848:10c5:78d9) (Quit: late) |
| 18:29:59 | × | Typedfern quits (~Typedfern@221.red-83-37-36.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
| 18:36:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Remote host closed the connection) |
| 18:39:53 | × | mmhat quits (~mmh@p200300f1c721be6dee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 18:40:16 | → | mmhat joins (~mmh@p200300f1c721be80ee086bfffe095315.dip0.t-ipconnect.de) |
| 18:42:27 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) |
| 18:42:39 | → | Typedfern joins (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) |
| 18:48:38 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 18:48:43 | → | money__ joins (~money@2601:40:c580:8530:215e:3848:10c5:78d9) |
| 18:49:40 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 18:50:29 | × | money__ quits (~money@2601:40:c580:8530:215e:3848:10c5:78d9) (Changing host) |
| 18:50:29 | → | money__ joins (~money@user/polo) |
| 18:50:29 | ChanServ | sets mode +o litharge |
| 18:50:30 | litharge | sets mode +b *!*@2601:40:c580:8530:215e:3848:10c5:78d9 |
| 18:50:41 | litharge | sets mode -o litharge |
| 18:51:27 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 18:52:35 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 18:54:08 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 18:56:01 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 19:02:02 | ← | money__ parts (~money@user/polo) () |
| 19:04:59 | → | trev joins (~trev@user/trev) |
| 19:06:36 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 19:06:45 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 19:09:41 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:12:34 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 272 seconds) |
| 19:14:18 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 19:20:33 | → | fizbin joins (~fizbin@user/fizbin) |
| 19:24:00 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:27:14 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 19:29:26 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 19:29:40 | → | Guest323 joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 19:31:23 | × | acidjnk quits (~acidjnk@p200300d6e7137a4229c4b6108dcb2f5b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 19:39:51 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 19:41:07 | → | beefbambi joins (~beefbambi@183.82.177.237) |
| 19:41:11 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) |
| 19:43:19 | → | acidjnk joins (~acidjnk@p200300d6e7137a42b47c8252f7d3d407.dip0.t-ipconnect.de) |
| 19:49:31 | × | beefbambi quits (~beefbambi@183.82.177.237) (Read error: Connection reset by peer) |
| 19:49:50 | → | beefbambi joins (~beefbambi@37.19.205.196) |
| 19:50:53 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:56:13 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 20:00:54 | × | Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds) |
| 20:02:51 | → | Ram-Z joins (~Ram-Z@li1814-254.members.linode.com) |
| 20:07:47 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 20:15:09 | → | Topsi joins (~Topsi@dialin-80-228-141-004.ewe-ip-backbone.de) |
| 20:18:47 | × | beefbambi quits (~beefbambi@37.19.205.196) (Ping timeout: 264 seconds) |
| 20:19:23 | → | beefbambi joins (~beefbambi@183.82.177.237) |
| 20:23:28 | <ddellacosta> | fast-logger is thread-safe? Code suggests so but I don't see it explicitly documented anywhere |
| 20:30:26 | <ddellacosta> | nevermind https://github.com/kazu-yamamoto/logger/issues/203 |
| 20:30:50 | <EvanR> | oof |
| 20:31:05 | <ddellacosta> | yeah :-( |
| 20:31:15 | × | johnw quits (~johnw@2600:1700:cf00:db0:e590:8ce7:d874:8b6) (Quit: ZNC - http://znc.in) |
| 20:32:05 | <dsal> | Is the problem just logs not happening in the right order? |
| 20:32:20 | <ddellacosta> | I mean, that's not such a big deal if I don't care about ordering, that's true |
| 20:32:35 | <geekosaur> | lookslike it |
| 20:32:43 | <ddellacosta> | but, it does make me want to take a closer look at the code |
| 20:33:38 | <dsal> | It's not clear to me what the relationship between "multithreaded code" and "right order" is if there's not explicit causality being tracked. |
| 20:34:20 | <ddellacosta> | I mean, I guess the main thing I want to know is that I can order after the fact correctly via timestamps |
| 20:34:24 | <EvanR> | if precise timestamps are recorded then it's not true they logs will have increasing (non-decreasing?) timestamps |
| 20:34:55 | → | fizbin_ joins (~fizbin@user/fizbin) |
| 20:34:59 | → | notzmv joins (~zmv@user/notzmv) |
| 20:35:00 | <EvanR> | whatever that's worth |
| 20:36:03 | <monochrom> | Oh, it's saying out of order for messages from the same thread. |
| 20:36:31 | <EvanR> | how the heck |
| 20:38:42 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 272 seconds) |
| 20:39:27 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 20:39:49 | → | pavonia joins (~user@user/siracusa) |
| 20:40:54 | <monochrom> | But then, I don't understand why the analysis explains the obersvation :) |
| 20:41:13 | <unit73e> | log thread-safe? I never expect much instruction ordering in haskell, but that's because I never cared as long as the final result is valid. |
| 20:41:34 | <monochrom> | What if "the final result" means the log? :) |
| 20:41:56 | <unit73e> | in that case yeah I would care :p but that would create a big bottleneck |
| 20:42:05 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 20:42:17 | <jean-paul[m]> | Where does an error like "solveWanteds: too many iterations (limit = 4)" come from? I just started using a lens and RecursiveDo at the same time (for the first time in both cases), not sure which is to blame |
| 20:42:42 | → | fizbin__ joins (~fizbin@user/fizbin) |
| 20:43:12 | <monochrom> | What is the MonadFix instance in this case? |
| 20:45:32 | <geekosaur> | jean-paul[m], that's the typechecker, and it's probably RecursiveDo (which is why monochrom is asking about the MonadFix instance, because mdo uses mfix behind the scenes) |
| 20:46:05 | × | fizbin_ quits (~fizbin@user/fizbin) (Ping timeout: 246 seconds) |
| 20:46:33 | <monochrom> | Wait, it is a type error, not a run-time error? |
| 20:46:46 | <jean-paul[m]> | Does the rest of the error tell me the relevant MonadFix instance (it says "[D] _ {1}:: MonadFix s0 (CDictCan)" but I don't know what that means) |
| 20:46:46 | <geekosaur> | solveWanteds is the typechecker, yes |
| 20:46:54 | <jean-paul[m]> | It is a type error yes, sorry for not specifying. |
| 20:47:30 | × | Topsi quits (~Topsi@dialin-80-228-141-004.ewe-ip-backbone.de) (Ping timeout: 268 seconds) |
| 20:47:41 | <geekosaur> | but MonadFix is very likely to be why solveWanteds is looping |
| 20:48:14 | <monochrom> | Then I don't know. |
| 20:48:38 | <jean-paul[m]> | is solveWanteds trying to ... tie the knot, or something? And the error means it couldn't get it tied (in few enough iterations)? |
| 20:49:11 | <geekosaur> | more complicated than that; you can't tie the knot at type level, only at value level using laziness |
| 20:49:41 | <jean-paul[m]> | I think I fixed the cause ... I had wrong precedence on a lens operator so there was a trivial type error in the do block. But that was just from guessing, not because I understood any part of the error message. |
| 20:50:16 | <monochrom> | I only know one kind of type-level "looping", and it's the well-known one since even Prolog: occurs check aka infinite type, which would be "(limit = finite)", not "(limit = 4)". |
| 20:50:52 | <geekosaur> | I think the error means some type can't be resolved properly because it has as many unsolved "wanteds" (type variables, essentially) after resolving inner types as it had originally |
| 20:51:00 | <EvanR> | ultrafinite types |
| 20:51:01 | <geekosaur> | this shouldn't happen normally |
| 20:51:31 | <geekosaur> | well, I guess I can't say that with certainty, iirc you can trigger it with type families |
| 20:52:17 | <jean-paul[m]> | I am also learning to use Reflex ... which seems to use type families a lot. |
| 20:54:17 | × | beefbambi quits (~beefbambi@183.82.177.237) (Ping timeout: 268 seconds) |
| 20:54:31 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 20:56:28 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:2aee:78bc:c5aa:c32c) |
| 20:56:44 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 20:58:23 | → | beefbambi joins (~beefbambi@183.82.177.237) |
| 20:58:32 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:2aee:78bc:c5aa:c32c) (Client Quit) |
| 21:01:41 | monochrom | has a toy program that uses both BangPatterns and NumericUnderscores. OK that's it, let's just go GHC2021 haha.) |
| 21:01:45 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 21:03:37 | <monochrom> | Oh! I'm also learning the eveff library, and when you use it you usually want to turn on TypeOperators, FlexibleContexts, RankNTypes. That's also simplifiable to GHC2021. :) |
| 21:04:17 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 21:15:09 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 21:15:26 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 246 seconds) |
| 21:17:18 | fizbin__ | is now known as fizbin |
| 21:17:36 | × | wroathe quits (~wroathe@user/wroathe) (Read error: Connection reset by peer) |
| 21:18:02 | <fizbin> | Does anyone know how to get coverage of an executable's "main" module out of stack? |
| 21:18:34 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 21:20:06 | <fizbin> | I can't figure out how to use "stack hpc" to give me what I want, though I do have these *.tix files. Is there some way I can manually take this .tix file and apply it to my main .hs file? |
| 21:21:10 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Client Quit) |
| 21:21:57 | <glguy> | fizbin: are you already looking at https://wiki.haskell.org/Haskell_program_coverage#Hpc_with_a_Cabal_project ? |
| 21:22:11 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:22:30 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 21:24:08 | × | Xeroine quits (~Xeroine@user/xeroine) (Read error: Connection reset by peer) |
| 21:24:22 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 21:27:53 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 21:30:40 | × | beefbambi quits (~beefbambi@183.82.177.237) (Read error: Connection reset by peer) |
| 21:31:31 | → | beefbambi joins (~beefbambi@183.82.177.237) |
| 21:32:13 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 21:32:25 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 21:32:37 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 21:33:51 | × | zer0bitz quits (~zer0bitz@196.244.192.62) (Read error: Connection reset by peer) |
| 21:40:04 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
| 21:40:29 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 21:45:07 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 21:48:39 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 21:50:57 | → | biberu joins (~biberu@user/biberu) |
| 21:52:24 | → | freeside joins (~mengwong@103.252.202.159) |
| 21:54:17 | → | cheater joins (~Username@user/cheater) |
| 21:55:29 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 21:56:45 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
| 21:58:03 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 248 seconds) |
| 21:59:27 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Client Quit) |
| 22:00:50 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 22:01:01 | × | n0den1te quits (~n0den1te@223.178.84.197) (Quit: leaving) |
| 22:03:22 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 265 seconds) |
| 22:06:21 | <geekosaur> | mm, nheko still dumps core when checking my matrix account, forgot about that |
| 22:07:04 | × | titibandit quits (~titibandi@xdsl-89-0-163-79.nc.de) (Remote host closed the connection) |
| 22:11:22 | <monochrom> | yikes haha |
| 22:12:33 | → | freeside joins (~mengwong@103.252.202.159) |
| 22:14:06 | <fizbin> | glguy: Actually, https://downloads.haskell.org/~ghc/7.6.3/docs/html/users_guide/hpc.html showed me enough commands to cobble together a report. |
| 22:14:27 | × | ozkutuk53 quits (~ozkutuk@176.240.173.153) (Ping timeout: 256 seconds) |
| 22:25:08 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 246 seconds) |
| 22:27:24 | <bjourne> | how do you write an empty do block? |
| 22:27:53 | <Rembane> | bjourne: It's very hard. What makes you want to do that? |
| 22:28:12 | <bjourne> | if without else |
| 22:28:57 | <Rembane> | Perhaps guard can help you there. |
| 22:28:59 | <Rembane> | :t guard |
| 22:29:00 | <lambdabot> | Alternative f => Bool -> f () |
| 22:29:05 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 22:30:39 | <sm> | or when or unless. Also return () often works. |
| 22:30:46 | <EvanR> | :t do {} |
| 22:30:48 | <lambdabot> | error: Empty 'do' block |
| 22:31:05 | <EvanR> | "you can't" |
| 22:32:19 | <mauke[m]> | :t do { M.empty } |
| 22:32:21 | <lambdabot> | M.Map k a |
| 22:32:39 | → | cheater_ joins (~Username@user/cheater) |
| 22:33:58 | × | cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds) |
| 22:34:04 | <dsal> | > do do do do do do do do do do do empty :: Maybe () |
| 22:34:05 | <lambdabot> | Nothing |
| 22:34:28 | → | cheater__ joins (~Username@user/cheater) |
| 22:34:28 | cheater__ | is now known as cheater |
| 22:34:40 | <shapr> | I like that song |
| 22:34:50 | <monochrom> | No, not guard. when. |
| 22:35:12 | <monochrom> | Alternatively, "empty do block" is pure(). |
| 22:35:40 | <Rembane> | But then the do block has content even though it doesn't do anything. |
| 22:35:52 | <Rembane> | I suppose you could see it in a syntactic or semantic way. |
| 22:35:55 | <monochrom> | Well yeah it's an XY problem. |
| 22:36:14 | <EvanR> | is the opposite of empty do = mfix return |
| 22:36:21 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:36:29 | <monochrom> | "I want to do nothing. I think it is achieved by an empty do block." |
| 22:36:43 | <dsal> | :t do Nothing |
| 22:36:44 | <lambdabot> | Maybe a |
| 22:37:15 | <Rembane> | And then things go wrong and I can take care of it like this: |
| 22:37:17 | <Rembane> | > fix error |
| 22:37:18 | <lambdabot> | "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex... |
| 22:37:21 | <Rembane> | :D |
| 22:37:31 | <monochrom> | Studying program semantics (any kind) will reveal that so-called "if-then without else" is syntax sugar for if-then-with-else but the else branch says "nop". |
| 22:38:24 | × | cheater_ quits (~Username@user/cheater) (Ping timeout: 272 seconds) |
| 22:38:26 | <monochrom> | Semantically there is always two branches and there is always content in each, even if the content may be trivial. |
| 22:39:21 | <bjourne> | :) true but programmers care about aestethics so we don't write if (blah) { ... } else { } if we dont need the else |
| 22:39:30 | → | CodeInTheShade joins (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) |
| 22:39:36 | <monochrom> | Here "trivial" means the identity function (for functional semantics) or the identity for sequential composition (for imperative semantics). In each case the identity element of respective monoids, yes. |
| 22:40:10 | <geekosaur[m]> | bjourne, understand that if is not a statement, it is an expression |
| 22:40:13 | <monochrom> | Programmers should care about both aesthetics and semantics. |
| 22:40:31 | <geekosaur[m]> | everything in haskell is an expression |
| 22:40:37 | <dsal> | bjourne: if is an expression. What does it mean to say `let a = if False then 1` ? |
| 22:40:42 | <bjourne> | i'm well aware of that |
| 22:40:57 | <monochrom> | For some reason, usually FP tends to make you more painfully aware of semantics. |
| 22:41:38 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:e41e:1f5b:1741:59ed) |
| 22:41:48 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 22:41:53 | <dsal> | I rather dislike `if-then-else` in haskell. `bool` is usually worse, though. |
| 22:42:33 | × | CodeInTheShade quits (~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Client Quit) |
| 22:42:40 | <monochrom> | Is that just because of boolean being much less expressive that general ADT cases? |
| 22:42:41 | <bjourne> | yeah similar to how c makes you painfully aware of how the heap works |
| 22:43:04 | <mauke[m]> | technical note: C doesn't have a heap |
| 22:43:14 | <monochrom> | Because the same consideration applies for "what if in some case I want to 'do nothing'". |
| 22:44:04 | <mauke[m]> | technical note: gcc has a ?: operator with an optional 'then' branch |
| 22:44:27 | <davean> | mauke[m]: which definition are you using to say C lacks a heap? |
| 22:44:55 | <geekosaur[m]> | C doesn't define one, malloc/free are defined by a library |
| 22:45:10 | <mauke[m]> | the standard library is part of C |
| 22:45:25 | <monochrom> | Or you just don't like the surface syntax of "if cond then b1 else b2", you would rather like "cond ? b1 : b2" or even Hoare's invention "b1 <| cond |> b2" :) |
| 22:45:49 | <mauke[m]> | oh no, middle endian control flow |
| 22:46:04 | <mauke[m]> | davean: ISO 9899:something something |
| 22:46:45 | <monochrom> | Let's just ignore the pedantics. |
| 22:46:47 | <davean> | mauke[m]: It doesn't *mention* a heap |
| 22:47:19 | <monochrom> | I am an average community member and when I see "heap in C" I know what the speaker refers to and I know it exists we need not "correct" the wording. |
| 22:47:45 | <monochrom> | Languages are defined by actual users. Including both conversations and C. |
| 22:48:01 | <mauke[m]> | how big is the average community? |
| 22:48:04 | <davean> | I mean "heap memory" is a description of dynamic, non-stack memory |
| 22:48:10 | <davean> | and C certainly has that in that specification |
| 22:48:17 | <davean> | so ... it has a heap technically. |
| 22:48:40 | <davean> | You might use a non-standard definition of heap, and then it wouldn't |
| 22:48:43 | <mauke[m]> | I'm not sure C has a stack either, so "non-stack" may be ill-defined |
| 22:49:42 | <EvanR> | now you all are making me question "how the heap works" xD |
| 22:49:46 | <EvanR> | as a concept |
| 22:50:07 | <davean> | mauke[m]: you seem to be claiming if a standard doesn't reference something by name that such a thing doesn't exist even though its semantics are pressent and the thing is a categorization |
| 22:50:35 | <mauke[m]> | sorry for making you painfully aware :-) |
| 22:50:52 | <monochrom> | The statement "c makes you painfully aware of how the heap works" is true because you have to painfully decide when to call malloc() and when to call free() and you will make mistakes and it all blows up. And painfully if you are lucky to work on an embedded system it may even lack a heap in the first place. In both cases the statement is true. |
| 22:50:54 | <EvanR> | starting with, does it even (work) |
| 22:51:58 | <monochrom> | In the same way "Python makes you painfully aware of static type checking" precisely because it doesn't have it. |
| 22:52:36 | <monochrom> | And of course on the flip side "Haskell makes you painfully aware of dynamic type checking" to be fair haha. |
| 22:52:40 | <mauke[m]> | davean: I think we're getting close to "monads are just containers" territory |
| 22:53:16 | <davean> | No monads aren't containers, they're a set of operators and laws |
| 22:53:24 | <davean> | anything that does that is a monad very clearly. |
| 22:53:28 | <mauke[m]> | in that I claim "heap" (like "containers") is not a well-defined category, so its semantics are murky |
| 22:54:03 | <davean> | Many monads *are not containers* in that they contain nothing. |
| 22:54:10 | <davean> | :-p |
| 22:54:22 | <mauke[m]> | for example? |
| 22:54:23 | <davean> | eh |
| 22:54:32 | <davean> | no, I'm walking that back, because thats not quite what I meant to say |
| 22:54:42 | <davean> | and its not interesting anyway |
| 22:55:00 | <monochrom> | Monads are heaps. There. |
| 22:55:04 | <davean> | particularly because this is a Haskell channel, and we have a seperate definition of Monad |
| 22:55:17 | <Jadesheit[m]> | the `(->) r` monad? |
| 22:55:33 | <mauke[m]> | that's a container. more specifically, it's a map |
| 22:57:21 | → | mikoto-chan joins (~mikoto-ch@164.5.249.78) |
| 22:58:41 | <mauke[m]> | <monochrom> "The statement "c makes you..." <- I'd say that's more C making you painfully aware of manual memory management |
| 22:59:33 | <mauke[m]> | to which you could reply "well, that's just what I mean by 'heap'" |
| 23:00:00 | <monochrom> | We need not "correct" the wording. |
| 23:00:11 | <mauke[m]> | but I feel it equally applies to e.g. the file system, and I haven't seen anyone refer to that as a heap |
| 23:00:37 | <monochrom> | And to answer your earlier question "how big is the average community?", answer: Includes all those here who were not picking on the wording. |
| 23:02:41 | → | dsrt^ joins (~dsrt@76.145.185.103) |
| 23:03:19 | <EvanR> | if a container is defined as a boundary clearly partitioning inside from outside, that nicely excludes like everything people usually call containers in programming xD |
| 23:04:56 | <monochrom> | I don't think people define it that way. I think people define it to be "add data" and "get data back". |
| 23:05:52 | <mauke[m]> | I don't think people define things precisely |
| 23:06:01 | <ggVGc> | the thing about words... is that they can have different meanings in different contexts |
| 23:06:03 | <ggVGc> | like magic |
| 23:06:20 | <monochrom> | It is never referentially transparent. |
| 23:06:36 | <monochrom> | If that's magic, then (->)r is magic, too. |
| 23:06:39 | <ggVGc> | I once thought things were very well defined in maths, but then I was forced to study a bunch of maths this year. And now I know better |
| 23:06:53 | <monochrom> | In fact every monad is magic. |
| 23:07:51 | <monochrom> | Oh things are usually very well defined in maths. So well defined there are multiple competing definitions for the same thing, and all competitors are very precise. |
| 23:08:01 | <ggVGc> | haha |
| 23:08:14 | <ggVGc> | well, yes... that's the correct interpretation I guess |
| 23:08:14 | × | bjourne quits (~bjorn@94.191.136.87.mobile.tre.se) (Read error: Connection reset by peer) |
| 23:08:22 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 23:08:22 | <monochrom> | For example one definition precisely says "0 is not a natural number" and another precisely says "0 is a natural number". |
| 23:08:39 | <ggVGc> | I also was not aware how wild the space of notation was |
| 23:08:40 | → | fizbin joins (~fizbin@user/fizbin) |
| 23:09:15 | <ggVGc> | but then I'm a physics major, and the physicists are even more insane with notations |
| 23:09:22 | <ggVGc> | turns out language is hard |
| 23:09:26 | <ggVGc> | and context-sensitive |
| 23:09:48 | <Hecate> | formalising the outside world was a mistake |
| 23:09:50 | <EvanR> | physics would be easier with type signatures |
| 23:10:02 | <EvanR> | at a certain level I wonder if anyone's even tried |
| 23:10:07 | <ggVGc> | please don't make my add type signatures to my lab reports |
| 23:10:07 | <Hecate> | we must go back to avoiding insulting the gods |
| 23:10:15 | <Hecate> | and to hell with petrochemistry |
| 23:10:20 | <Hecate> | ggVGc: :D |
| 23:10:21 | <mauke[m]> | I knew math notation was a mess when I saw | used to mean absolute value, set definition, and "divides", all in the same line |
| 23:10:31 | <Hecate> | mauke[m]: oh dear |
| 23:10:40 | <EvanR> | |1lI |
| 23:11:11 | <ggVGc> | mauke[m]: my favourite so far is my linear algebra book using pi as the name of a plane, while also talking about the angles relating to said plane, in terms of pi, in the same blob of text |
| 23:11:20 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds) |
| 23:11:24 | <mauke[m]> | haha |
| 23:11:29 | <darkling> | Youch. |
| 23:11:44 | <Rembane> | ggVGc: Crystal clear! :D |
| 23:11:47 | → | cheater_ joins (~Username@user/cheater) |
| 23:12:16 | <Hecate> | some editors must be equipped with a hammer |
| 23:12:18 | <Hecate> | a big hammer |
| 23:12:49 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
| 23:13:01 | <ggVGc> | or my current book using lowercase k and greek kappa in two equations which are almost identical, where the kappa is a value dependent on k |
| 23:13:23 | <ggVGc> | and shows the two equations in different parts of the text |
| 23:13:34 | <ggVGc> | and on each line I have to look close if it's the one with k or the one with kappa |
| 23:14:16 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 23:14:24 | cheater_ | is now known as cheater |
| 23:14:52 | <EvanR> | small kappa looks different, k vs κ |
| 23:14:52 | <ggVGc> | my conclusion is that programmers have it easy. We might fight about code styles, but at least the general symbols are forced to be coherent by compilers and interpeters |
| 23:14:54 | <ggVGc> | mostly... |
| 23:15:12 | <darkling> | I think they're mostly forced to be that way by the keyboards. |
| 23:15:20 | <ggVGc> | EvanR: pretty hard to see the difference when reading the text though, especially since there's a bunch of other maths and explanations around it |
| 23:15:24 | <darkling> | (APL, I'm looking at you) |
| 23:15:38 | <ggVGc> | it's not that it's impossible, just adds a bit too much strain when trying to learn the material, for my taste |
| 23:15:52 | <EvanR> | picking letters is really an art, it's all about your audience familiarity with implications |
| 23:16:17 | <ggVGc> | true |
| 23:16:23 | <EvanR> | and collisions are resolved with the infamous "will be clear from context" |
| 23:16:25 | <darkling> | I had a table of symbols in the back of my thesis. Fortunately, it only ran to two pages. |
| 23:16:28 | <ggVGc> | I always feel weird when I pick something non-standard in an exam |
| 23:16:28 | <mauke[m]> | if only mathematicians weren't allergic to multi-letter identifiers ("words") |
| 23:16:36 | <ggVGc> | feels like I'm gonna get points off for not sticking to the norm |
| 23:16:46 | <mauke[m]> | then they wouldn't have to keep opening up new alphabets |
| 23:17:00 | <ggVGc> | that would make the maths quite weird to read, imo |
| 23:17:09 | <EvanR> | you'd need a different font so it doesn't look like a bunch of letters times |
| 23:17:16 | <monochrom> | Yes, precisely multi-letter identifiers save the day. |
| 23:17:18 | <ggVGc> | since letters next to each other is multiplication, which I think basically everyone agrees on |
| 23:17:34 | <monochrom> | Then again you lose "abc means a times b times c". |
| 23:17:35 | <EvanR> | distance = rate * time |
| 23:18:05 | <mauke[m]> | sin(c o s) |
| 23:18:18 | <ggVGc> | maths already gets super long and messy. I think adding multi-letter words to it would make it way too unwieldly |
| 23:18:31 | <monochrom> | Then again since mathematicians already embrace ambiguity "you figure it out", why not accept both >:D |
| 23:18:44 | <ggVGc> | however, as mauke[m] just pointed out, some functions apparently get to be named multilatter... |
| 23:18:54 | <EvanR> | super long and messy math = failed math xD |
| 23:19:04 | <mauke[m]> | (f)(x) |
| 23:19:04 | <monochrom> | "abc may mean abc, or a times bc, or ab times c, or a times b times c, depending on context" |
| 23:19:07 | <ggVGc> | I fail maths every day. AMA |
| 23:19:16 | <mauke[m]> | multiplication or application? |
| 23:19:16 | <geekosaur> | y'all do know about U+2062, right? |
| 23:19:41 | <monochrom> | > text "\u2062" |
| 23:19:43 | <lambdabot> | <hint>:1:8: error: |
| 23:19:43 | <lambdabot> | lexical error in string/character literal at character 'u' |
| 23:20:00 | <geekosaur> | > text "\x2062" |
| 23:20:02 | <lambdabot> | |
| 23:20:11 | <geekosaur> | invisible multiplication sign |
| 23:20:11 | <mauke[m]> | great times were had |
| 23:20:41 | <mauke[m]> | ... and that crashed my Element |
| 23:20:51 | <ggVGc> | as it should |
| 23:20:58 | <monochrom> | Oh haha invisible times |
| 23:20:59 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
| 23:21:20 | → | freeside joins (~mengwong@103.252.202.159) |
| 23:21:51 | <dgpratt[m]> | I'm playing around with a toy parser/interpreter for a very simple "language" (RS274 -- basically just a simple sequence of commands that may incorporate expressions and settable variables). But some have extended RS274 to include basic control flow and subroutines and I'm thinking about how to implement such things. One thing in particular I'm not sure how best to handle is the idea of exiting a subroutine from within (say) some nested |
| 23:21:51 | <dgpratt[m]> | control flow block. Any ideas about how that might be accomplished? |
| 23:21:55 | <geekosaur> | nheko (from flatpak since ubuntu's crashed) handled it fine |
| 23:22:03 | <monochrom> | Oh and U+2061 is invisible function application. |
| 23:22:16 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 23:22:50 | <EvanR> | who ordered these new invisible "characters" |
| 23:22:51 | <geekosaur> | dgpratt[m], ContT at the price of your sanity |
| 23:22:54 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 23:23:10 | <mauke[m]> | I was about to say, you can do anything with continuations |
| 23:23:23 | <dgpratt[m]> | geekosaur: so funny you said that -- I was just going to say that I was afraid it might be some sort of CPS thing |
| 23:23:47 | <monochrom> | "sin\x2061(2\x2062t) = 2\x2062sin\xt\x2062cos\x2061t" :) |
| 23:23:53 | <dgpratt[m]> | for some reason, I find that sort of thing a bit intimidating |
| 23:24:40 | <monochrom> | Ugh there is also invisible plus at U+2064 -_- |
| 23:25:05 | <ggVGc> | I'm adopting monochrom's style for my exam in 2 weeks |
| 23:25:24 | <dgpratt[m]> | geekosaur: anyways, I guess it's good to know my instincts weren't altogether wrongheaded, thanks |
| 23:25:39 | → | v0id_ptr joins (~adrift@user/ptr-frac7al/x-0038398) |
| 23:25:44 | <mauke[m]> | alternatively, ruthlessly rename everything using Chinese characters |
| 23:25:59 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 268 seconds) |
| 23:26:01 | <mauke[m]> | there's thousands of them, so you can give every concept its own distinct symbol |
| 23:26:42 | <monochrom> | dgpratt[m]: ContT is easier to use than writing your own CPS. |
| 23:27:14 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:27:28 | <dgpratt[m]> | noted, thanks |
| 23:31:58 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 23:32:12 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 23:34:47 | × | fserucas quits (~fserucas@a85-138-107-42.cpe.netcabo.pt) (Ping timeout: 246 seconds) |
| 23:36:15 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 23:36:17 | → | cheater joins (~Username@user/cheater) |
| 23:37:37 | <DigitalKiwi> | geekosaur: if it's invisible why do i see it :( |
| 23:37:53 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Client Quit) |
| 23:38:21 | <geekosaur> | got a glyph box because your font doesn't have it |
| 23:38:23 | <geekosaur> | ? |
| 23:38:33 | <ggVGc> | monochrom: might be easier to do it manually first though? |
| 23:38:38 | <monochrom> | Yikes, GHC2021's PolyKinds may ruin some of my code. |
| 23:38:43 | <DigitalKiwi> | there's a dotted square around a x |
| 23:38:46 | <ggVGc> | like using explicit state and then moving to State monad |
| 23:38:51 | <geekosaur> | fascinating |
| 23:38:58 | <EvanR> | sorry, your font has this glyph but it's supposed to be invisible. Aborting |
| 23:39:08 | <DigitalKiwi> | https://capture.dropbox.com/1yxEyTcJIfmaPYvj |
| 23:39:16 | <geekosaur> | saner but not what was intended |
| 23:39:16 | → | bjourne joins (~bjorn@94.191.136.87.mobile.tre.se) |
| 23:41:01 | <monochrom> | "easier to understand the principle underneath" vs "easier to get things done right now this project was due yesterday" |
| 23:41:41 | <monochrom> | "use" means the latter, not the former. |
| 23:41:44 | <ggVGc> | usually it's hard to do the latter without the former |
| 23:41:46 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 23:41:47 | <ggVGc> | in my experience |
| 23:42:56 | → | freeside joins (~mengwong@103.252.202.159) |
| 23:43:05 | <DigitalKiwi> | nah nobody understands monads but everyone writes blogs about them and uses them :D |
| 23:43:12 | <ggVGc> | also, from the ContT documentation: "Before using the Continuation monad, be sure that you have a firm understanding of continuation-passing style and that continuations represent the best solution to your particular design problem. Many algorithms which require continuations in other languages do not require them in Haskell, due to Haskell's lazy semantics. Abuse of the Continuation monad can |
| 23:43:14 | <ggVGc> | produce code that is impossible to understand and maintain." |
| 23:43:16 | <ggVGc> | :) |
| 23:44:00 | <DigitalKiwi> | the nice thing about monads is even if you don't understand them they're still useful eh |
| 23:44:07 | <geekosaur> | cf. "…at the price of your sanity" |
| 23:44:38 | <ggVGc> | let's be honest, it's the do notation we want |
| 23:44:52 | <geekosaur> | twice a year I work out how Cont works and promptly forget it again |
| 23:44:53 | <ggVGc> | still trying to train myself into ApplicativeDo |
| 23:45:00 | <monochrom> | This is not worth my time. You are talking about general arbitrary usages. The context is a very specific narrow "early exit" and there is just one idiom to know and use. |
| 23:45:17 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 23:45:56 | <monochrom> | And this is nowhere remotely close to "abuse". |
| 23:46:23 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 264 seconds) |
| 23:47:18 | <monochrom> | And to rub it in, this is actually a case of "an algorithm which does not require continuation in other languages requires it in Haskell", the very opposite of what the doc says. |
| 23:47:21 | <ggVGc> | It was just in response to dgpratt[m] saying they are uncomfortable with CPS, and me remembering the documentation even has a warning along those lines in regards to ContT |
| 23:47:45 | <monochrom> | And nothing says the doc is right in the first place. |
| 23:47:49 | × | freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds) |
| 23:47:53 | <EvanR> | what's funny is you can expand do notation and format it so it looks almost the same as do notation |
| 23:48:10 | <EvanR> | I'm surprised it's even a thing |
| 23:48:18 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:48:19 | <ggVGc> | EvanR: that's kind of the point of it, isn't it? |
| 23:48:29 | <ggVGc> | But, there's more stuff on your screen then... which we don't like |
| 23:48:41 | <EvanR> | there's very little "more" on the screen |
| 23:48:49 | <EvanR> | if you try it xD |
| 23:49:14 | <EvanR> | it's like when I rewrote my AoC code to use globals, it didn't actually reduce my code |
| 23:49:26 | <ggVGc> | I often write things without do, but for longer things, all the binds kind of distract from the bigger picture |
| 23:49:40 | <EvanR> | that's where the formatting comes in |
| 23:49:41 | <monochrom> | Yeah there was a small window of time when there was >>= but no do-notation yet, so people thought up how to format it nicely. |
| 23:50:46 | <EvanR> | and about the presence of >>= in there, sometimes knowing what those look like is key to understanding certain monadic constructions, wrt laziness |
| 23:51:54 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
| 23:52:48 | → | mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) |
| 23:53:29 | <mizlan> | hello am i connected |
| 23:53:41 | <monochrom> | yes |
| 23:54:20 | <mizlan> | woohoo thanks, i am new to IRC :) |
| 23:54:59 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:e41e:1f5b:1741:59ed) (Ping timeout: 255 seconds) |
| 23:55:07 | <sm> | welcome, private |
| 23:58:12 | × | johnjaye quits (~pi@173.209.64.74) (Ping timeout: 272 seconds) |
| 23:59:42 | → | johnjaye joins (~pi@173.209.64.74) |
| 23:59:51 | → | freeside joins (~mengwong@103.252.202.159) |
| 23:59:54 | × | mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 268 seconds) |
All times are in UTC on 2022-12-28.