2022/12/28

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