2022/12/28

2022-12-28 00:00:28 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 00:00:41 +0100 <DigitalKiwi> also you can use ligatures too if you like
2022-12-28 00:00:46 +0100 <ggVGc> ah, wait, maybe what I am thinking about is some characters not being available as operators because of the core language
2022-12-28 00:00:49 +0100 <ggVGc> like @
2022-12-28 00:00:53 +0100 <monochrom> Err I think DigitalKiwi demonstrated it. :)
2022-12-28 00:01:03 +0100 <geekosaur> the only restriction is it must have a generalCategory of Symbol and not be something like parens
2022-12-28 00:01:04 +0100 <monochrom> But I can too!
2022-12-28 00:01:08 +0100 <geekosaur> oh yes, misread, sorry
2022-12-28 00:01:12 +0100 <ggVGc> well then, I guess the cat is already fully out of the bag then
2022-12-28 00:01:41 +0100 <geekosaur> you can't replace core syntax like @ | : though
2022-12-28 00:02:03 +0100 <monochrom> > let λ × µ = λ * µ in 4 × 5
2022-12-28 00:02:04 +0100 <lambdabot> 20
2022-12-28 00:02:46 +0100 <ggVGc> tried using unicode syntax in my Elixir work a few years ago. Didn't stick with it for long
2022-12-28 00:02:48 +0100 <DigitalKiwi> i think emacs will show -> as the unicode symbol → and => as ⇒ etc. pretty easily
2022-12-28 00:03:00 +0100 <monochrom> It has been allowed for like 20 years and the community has not abused it. This is how you know it's OK.
2022-12-28 00:03:05 +0100 <ggVGc> still waiting to be compelled by some example of unicode adding enough for it to be worth the hassle
2022-12-28 00:03:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:79de:2e5a:63dd:b89) (Ping timeout: 246 seconds)
2022-12-28 00:03:26 +0100 <DigitalKiwi> i like that better than actually using the unicode because i can type -> but have to copy paste the unicode...but like looking at the unicode
2022-12-28 00:03:32 +0100 <ggVGc> DigitalKiwi: yeah, but that sucks a lot, since now you have one glyph that is actually 2 glyphs when editing
2022-12-28 00:03:37 +0100 <ggVGc> it's very confusing. I tried it...
2022-12-28 00:03:58 +0100 <ggVGc> I could never get used to it
2022-12-28 00:04:57 +0100 <ggVGc> monochrom: it might be time to implement a port of all of Prelude, in only unicode punctuation glyphs
2022-12-28 00:06:24 +0100 <monochrom> You know, as far as pointless discussions go, let's have the following instead.
2022-12-28 00:06:31 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-12-28 00:06:42 +0100 <monochrom> Should "unicode" mean unicode, or should it mean "unicode minus ascii"?
2022-12-28 00:07:06 +0100 <monochrom> Because using the former, Prelude is already using unicode punctuations.
2022-12-28 00:07:33 +0100 <monochrom> Oh BTW you absolutely need to s/glyphs// , that's out of the question.
2022-12-28 00:08:19 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-12-28 00:08:20 +0100 <monochrom> But usually for convenience people also say "rectangle" when they mean "excluding square", so maybe people say "unicode" when they mean "except ascii".
2022-12-28 00:08:51 +0100 <ggVGc> definitely "unicode" means "not ascii" for the most part for me
2022-12-28 00:09:08 +0100 <ggVGc> unless I'm having a technical spec discussion
2022-12-28 00:09:33 +0100 <ggVGc> anyway, sorry, I just started ranting to escape my physics studies I think
2022-12-28 00:10:04 +0100 <DigitalKiwi> * is just the unicode version of what * looks like isn't it
2022-12-28 00:10:09 +0100 <ggVGc> doing the last handins made me violently think about making a DSL in haskell for generating latex quicker...
2022-12-28 00:11:06 +0100 <monochrom> I did write code to convert haskell-land binary trees to tikz commands...
2022-12-28 00:11:19 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-28 00:11:34 +0100 <monochrom> also to java-land binary trees haha
2022-12-28 00:11:53 +0100Kaipei(~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 268 seconds)
2022-12-28 00:12:09 +0100 <monochrom> because I needed to hardcode some java-land binary trees for test cases.
2022-12-28 00:12:15 +0100 <ggVGc> possibly this was for a CS degree? Which makes it slightly more acceptable to write software for your homework
2022-12-28 00:12:58 +0100 <monochrom> I would rather think that CS homeworks are more amenable to automation.
2022-12-28 00:13:44 +0100 <monochrom> I wouldn't have a problem with automating philosophy homework, if there were something to automate.
2022-12-28 00:14:12 +0100 <monochrom> or rather, I'm a pragmatist utilitarian, so s/something to/something worthwhile to/
2022-12-28 00:14:30 +0100 <ggVGc> it's not about it being okay or not. It's about if you spend time writing software to support your physics handins, it's very likely that the handing will not be handed in on time :) At leats in my case
2022-12-28 00:14:31 +0100 <monochrom> I guess by now GPT helps.
2022-12-28 00:14:47 +0100 <monochrom> Right, there you go.
2022-12-28 00:15:23 +0100 <monochrom> It has always been about path of least action. Pun intended.
2022-12-28 00:18:19 +0100Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
2022-12-28 00:18:23 +0100ph88(~ph88@84-30-78-253.cable.dynamic.v4.ziggo.nl) (Ping timeout: 260 seconds)
2022-12-28 00:26:10 +0100 <mauke[m]> speaking of -> and →, the default font used in Element has a special ligature that displays "->" as a rightward arrow :-(
2022-12-28 00:27:34 +0100 <geekosaur> yeh
2022-12-28 00:28:01 +0100 <monochrom> Does it also have a ligature for <- ? :)
2022-12-28 00:28:23 +0100 <DigitalKiwi> i'd say the bigger problem is that you're using element lol ;(
2022-12-28 00:29:02 +0100 <mauke[m]> what's a good alternative?
2022-12-28 00:29:05 +0100 <DigitalKiwi> monochrom: if not element is fascist amirite
2022-12-28 00:29:14 +0100 <DigitalKiwi> glirc
2022-12-28 00:29:37 +0100 <geekosaur[m]> `<-`
2022-12-28 00:29:53 +0100 <geekosaur[m]> I see no ligature
2022-12-28 00:30:04 +0100 <geekosaur> there are other clients for matrix
2022-12-28 00:30:36 +0100 <mauke[m]> DigitalKiwi: that's IRC, not Matrix
2022-12-28 00:30:50 +0100 <DigitalKiwi> element is just the most insecure flagship client lol
2022-12-28 00:31:09 +0100 <geekosaur> at some point I want to test nheko
2022-12-28 00:31:50 +0100 <DigitalKiwi> Logs: https://ircbrowse.tomsmeding.com/browse/lchaskell "irc"
2022-12-28 00:31:53 +0100 <DigitalKiwi> seems we're on irc
2022-12-28 00:32:25 +0100 <mauke[m]> so far the most amazing part about Element is that Preferences > Settings > Keyboard does not let you set your keyboard preferences
2022-12-28 00:32:39 +0100 <DigitalKiwi> lmao
2022-12-28 00:33:29 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 246 seconds)
2022-12-28 00:36:37 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-12-28 00:41:17 +0100chiselfuse(~chiselfus@user/chiselfuse)
2022-12-28 00:46:40 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2022-12-28 00:49:18 +0100mtjm(~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
2022-12-28 00:50:54 +0100mtjm(~mutantmel@2604:a880:2:d0::208b:d001)
2022-12-28 00:53:20 +0100Kaipei(~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net)
2022-12-28 00:56:31 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 00:57:43 +0100money_(~money@2601:40:c580:8530:b457:2fe4:d16f:fb83)
2022-12-28 00:59:56 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912)
2022-12-28 01:04:38 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 246 seconds)
2022-12-28 01:04:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Ping timeout: 260 seconds)
2022-12-28 01:04:49 +0100Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
2022-12-28 01:05:39 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 01:06:02 +0100money_(~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) (Quit: late)
2022-12-28 01:07:00 +0100money_(~money@2601:40:c580:8530:b457:2fe4:d16f:fb83)
2022-12-28 01:10:05 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2022-12-28 01:10:12 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-28 01:10:12 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-28 01:10:12 +0100wroathe(~wroathe@user/wroathe)
2022-12-28 01:10:28 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 268 seconds)
2022-12-28 01:13:14 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398)
2022-12-28 01:22:08 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 01:23:15 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 01:23:35 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 01:24:11 +0100TonyStone(~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving)
2022-12-28 01:24:50 +0100money_(~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) (Remote host closed the connection)
2022-12-28 01:26:18 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
2022-12-28 01:28:02 +0100money_(~money@2601:40:c580:8530:b457:2fe4:d16f:fb83)
2022-12-28 01:35:14 +0100money_(~money@2601:40:c580:8530:b457:2fe4:d16f:fb83) (Remote host closed the connection)
2022-12-28 01:35:26 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds)
2022-12-28 01:42:50 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-12-28 01:47:22 +0100CiaoSen(~Jura@p200300c95719fa002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-12-28 01:50:56 +0100jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-12-28 01:51:02 +0100 <jle``> i can't seem to get my day 16 to take less than 45 minutes lol
2022-12-28 01:51:32 +0100 <jle``> oops wrong channel
2022-12-28 01:53:08 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2022-12-28 01:53:14 +0100 <mauke[m]> part 1 or part 2?
2022-12-28 01:53:49 +0100 <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 01:54:38 +0100 <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 01:55:17 +0100 <mauke[m]> ... position container?
2022-12-28 01:55:49 +0100Guest323(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds)
2022-12-28 01:56:36 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-28 01:56:46 +0100 <jle``> well my search state is Position and set of pipes open
2022-12-28 01:57:09 +0100 <jle``> but i parameterized over a functor, SearchState f = S (f Point) (Set Pipe)
2022-12-28 01:57:13 +0100 <jle``> so for part 1 f is Identity
2022-12-28 01:57:17 +0100 <jle``> and part 2 it's a 2-vector
2022-12-28 01:57:31 +0100 <mauke[m]> oh, that sounds fancy
2022-12-28 01:57:42 +0100 <jle``> it was more out of laziness :)
2022-12-28 01:57:56 +0100 <jle``> the human kind, not the haskell kind
2022-12-28 01:58:24 +0100 <jle``> so i could re-use the same algorithm for part 2 with minimal change
2022-12-28 01:58:25 +0100 <mauke[m]> I have: process :: (Int -> Int -> Int) -> (Int -> Int) -> Int -> Int -> [Int] -> Int
2022-12-28 01:58:30 +0100 <jle``> but it leads to .. very long search time
2022-12-28 01:59:21 +0100 <mauke[m]> couldn't reuse the algorithm because it assumes you always move to an unopened valve at each step
2022-12-28 01:59:33 +0100bjourne(~bjorn@94.191.136.87.mobile.tre.se)
2022-12-28 01:59:44 +0100 <jle``> oh, i thought that assumption wasn't valid in the part 1, either?
2022-12-28 01:59:51 +0100 <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 02:00:23 +0100 <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 02:00:56 +0100 <mauke[m]> I can't even represent a move to an opened valve
2022-12-28 02:01:06 +0100 <mauke[m]> my fundamental operation is "move to valve and open"
2022-12-28 02:01:17 +0100 <jle``> D:
2022-12-28 02:02:21 +0100johnjaye(~pi@173.209.64.74) (Ping timeout: 265 seconds)
2022-12-28 02:02:51 +0100johnjaye(~pi@173.209.64.74)
2022-12-28 02:03:37 +0100 <glguy> I use my part 1 to build part 2
2022-12-28 02:04:12 +0100 <mauke[m]> so did I, but in a dumb way
2022-12-28 02:04:23 +0100 <glguy> And the thing runs in about 128ms
2022-12-28 02:04:59 +0100ft(~ft@i59F541CC.versanet.de) (Ping timeout: 264 seconds)
2022-12-28 02:05:23 +0100 <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 02:05:52 +0100 <glguy> I pre-solve all the ways
2022-12-28 02:06:12 +0100 <jle``> mauke[m]: ooh
2022-12-28 02:06:29 +0100 <jle``> and then you compare the best?
2022-12-28 02:07:17 +0100 <mauke[m]> maximum $ map (\(vs1, vs2) -> processPart vs1 + processPart vs2) valveDist
2022-12-28 02:07:26 +0100 <mauke[m]> hey, where's my backslashes
2022-12-28 02:07:46 +0100 <jle``> at this point i'm surprised my solution was even viable now
2022-12-28 02:07:51 +0100 <mauke[m]> `maximum $ map (\(vs1, vs2) -> processPart vs1 + processPart vs2) valveDist`
2022-12-28 02:08:09 +0100 <mauke[m]> I wrote Markdown. hope it looks sensible on the IRC side
2022-12-28 02:08:25 +0100 <geekosaur> even the first one looked sensible here
2022-12-28 02:09:25 +0100 <glguy> https://ibb.co/m9J3ZN0
2022-12-28 02:09:37 +0100 <mauke[m]> where valveDist = filter (uncurry (<)) (subseq valves)
2022-12-28 02:10:58 +0100geekosaursuddenly wonders when they got rid of the control-q stuff
2022-12-28 02:10:59 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-12-28 02:11:05 +0100 <glguy> mauke[m]: by first computing all the possible subsequences you can avoid checking impossible ones or recomputing costs
2022-12-28 02:11:25 +0100 <glguy> The control q stuff was working earlier this month
2022-12-28 02:11:52 +0100 <glguy> I was surprised to see it pop up; I implemented support for it earlier because irccloud can use it
2022-12-28 02:11:55 +0100xff0x(~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 256 seconds)
2022-12-28 02:12:08 +0100 <mauke[m]> backslash test: map (\(x, y) -> x + y)
2022-12-28 02:12:16 +0100 <mauke[m]> weird
2022-12-28 02:12:35 +0100 <geekosaur> I have a script for hexchat ut it has the side effect of breaking tab notifications, so I disabled it
2022-12-28 02:12:53 +0100 <mauke[m]> glguy: what do you mean by impossible?
2022-12-28 02:13:38 +0100 <glguy> There are valve sets one player couldn't open in time, depending on the map
2022-12-28 02:14:04 +0100 <jle``> thanks for the tips :)
2022-12-28 02:14:52 +0100 <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 02:15:34 +0100 <mauke[m]> I don't see how that follows
2022-12-28 02:17:06 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-12-28 02:17:24 +0100 <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 02:17:44 +0100acidjnk(~acidjnk@p200300d6e7137a53b8fa7112b5541570.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-12-28 02:18:24 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 02:18:35 +0100 <mauke[m]> how does that save me work?
2022-12-28 02:18:46 +0100 <glguy> depends if you were doing both queries or not
2022-12-28 02:18:56 +0100 <glguy> if you were then it saves a wasted query
2022-12-28 02:19:23 +0100 <glguy> also doing them as separate queries doesn't allow subsets that have a common prefix from sharing work
2022-12-28 02:19:47 +0100thongpv(~thongpv87@2001:ee0:54ab:430:ca58:16f9:bb47:d3ca) (Read error: Connection reset by peer)
2022-12-28 02:20:31 +0100 <mauke[m]> none of this makes sense to me
2022-12-28 02:20:54 +0100 <glguy> you were mapping a function over all the pairs of disjoint subsets of valves?
2022-12-28 02:21:26 +0100thongpv(~thongpv87@113.187.220.176)
2022-12-28 02:21:26 +0100 <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 02:21:51 +0100 <mauke[m]> the solution for {A, B, D, C} might be ACD or something
2022-12-28 02:22:01 +0100 <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 02:22:06 +0100 <glguy> err
2022-12-28 02:22:10 +0100 <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 02:22:52 +0100 <mauke[m]> well yeah. if you start with the optimal route.
2022-12-28 02:22:59 +0100 <glguy> so instead of asking individually about all the different subsets you can just enumerate all the reachable subsets
2022-12-28 02:23:07 +0100 <glguy> as a single graph search
2022-12-28 02:23:15 +0100thongpv87(~thongpv87@2001:ee0:54ab:430:ca58:16f9:bb47:d3ca) (Ping timeout: 256 seconds)
2022-12-28 02:24:44 +0100 <mauke[m]> are we talking about subsets of subsets now?
2022-12-28 02:25:13 +0100 <glguy> no, subsets of the whole graph
2022-12-28 02:25:19 +0100 <glguy> https://github.com/glguy/advent/blob/main/solutions/src/2022/16.hs#L68-L81
2022-12-28 02:27:10 +0100tremon(~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2022-12-28 02:28:36 +0100 <mauke[m]> TIL about ImportQualifiedPost
2022-12-28 02:29:25 +0100 <mauke[m]> first thing that confuses me: the Map Int [(Int, Int, Int)] type
2022-12-28 02:29:39 +0100thongpv(~thongpv87@113.187.220.176) (Ping timeout: 260 seconds)
2022-12-28 02:29:54 +0100 <mauke[m]> what is flow doing in there?
2022-12-28 02:30:09 +0100 <glguy> it's the flow value of the valve at that room
2022-12-28 02:30:25 +0100 <glguy> You only move to a room to open the valve there
2022-12-28 02:31:28 +0100thongpv(~thongpv87@14.246.240.163)
2022-12-28 02:32:01 +0100 <mauke[m]> but why is it attached to the arrows and not the nodes?
2022-12-28 02:32:13 +0100 <mauke[m]> also, which room?
2022-12-28 02:32:38 +0100 <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 02:32:54 +0100 <mauke[m]> your map describes the relationships between rooms, no?
2022-12-28 02:33:30 +0100 <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 02:34:25 +0100 <glguy> having separate maps would make you do twice as many Map.lookups
2022-12-28 02:34:34 +0100 <mauke[m]> does that mean each flow value is duplicated n times in your data structure (where n = number of elements)?
2022-12-28 02:34:39 +0100 <glguy> yeah
2022-12-28 02:35:11 +0100 <mauke[m]> btw, what's a SmallSet?
2022-12-28 02:35:23 +0100 <glguy> it's a Set but represented with an Int using bit operations
2022-12-28 02:35:42 +0100 <glguy> I should remove all the Map lookups and just tie the knot
2022-12-28 02:36:11 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 265 seconds)
2022-12-28 02:36:56 +0100 <mauke[m]> ah, I didn't assume N < 64
2022-12-28 02:37:39 +0100 <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 02:37:40 +0100 <mauke[m]> :-)
2022-12-28 02:37:56 +0100 <glguy> renumbering saved about 5x
2022-12-28 02:38:39 +0100 <glguy> at least in an earlier version
2022-12-28 02:39:58 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-12-28 02:40:15 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-28 02:43:39 +0100mauke[m]stares hard at the code
2022-12-28 02:48:59 +0100wroathe(~wroathe@user/wroathe) (Quit: leaving)
2022-12-28 02:49:18 +0100 <mauke[m]> ooh. I think I understand exactly what solve is computing
2022-12-28 02:49:55 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 02:49:56 +0100 <glguy> Help me understand what you found confusing, or what I didn't adequately explain so I can update the comments?
2022-12-28 02:50:07 +0100 <mauke[m]> and I'm pretty sure you're coalescing states by using room sets as keys
2022-12-28 02:50:47 +0100 <glguy> yes, that happens and I pick the larger of them with 'max'
2022-12-28 02:50:47 +0100 <mauke[m]> speaking of comments: line 71, s/values/valves/ ?
2022-12-28 02:51:01 +0100 <mauke[m]> wouldn't it be more efficient to use an IntSet?
2022-12-28 02:51:02 +0100 <glguy> oops
2022-12-28 02:51:07 +0100 <mauke[m]> er, IntMap
2022-12-28 02:51:24 +0100 <glguy> My experience so far is that IntMap is only faster for lookups and not updates
2022-12-28 02:51:54 +0100 <glguy> Any time I try swapping out a Map for IntMap this year of aoc I got worse times
2022-12-28 02:53:26 +0100 <EvanR> I've had good results for Map just for the convenience factor
2022-12-28 02:53:57 +0100 <EvanR> using IntMap when it's not an Int has non zero pain in the ass cost
2022-12-28 02:56:41 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-12-28 03:12:11 +0100 <mauke[m]> glguy: s/verticies/vertices/g
2022-12-28 03:12:42 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-12-28 03:16:11 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
2022-12-28 03:16:19 +0100fizbin(~fizbin@user/fizbin) (Remote host closed the connection)
2022-12-28 03:16:36 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-28 03:16:37 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 03:18:27 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-12-28 03:19:03 +0100 <romes[m]> Hey! I'm writing some type level code using type families, but I've encountered a weird behaviour:
2022-12-28 03:19:03 +0100 <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 03:19:11 +0100 <romes[m]> Any clues as to what it might be?
2022-12-28 03:23:04 +0100notzmv(~zmv@user/notzmv)
2022-12-28 03:27:16 +0100beefbambi(~beefbambi@183.82.25.109) (Read error: Connection reset by peer)
2022-12-28 03:29:49 +0100 <EvanR> what's β
2022-12-28 03:30:17 +0100beefbambi(~beefbambi@183.82.25.109)
2022-12-28 03:32:39 +0100beefbambi(~beefbambi@183.82.25.109) (Read error: Connection reset by peer)
2022-12-28 03:34:12 +0100 <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 03:34:49 +0100beefbambi(~beefbambi@183.82.25.109)
2022-12-28 03:34:52 +0100 <EvanR> it works? great
2022-12-28 03:41:24 +0100beefbambi(~beefbambi@183.82.25.109) (Read error: Connection reset by peer)
2022-12-28 03:41:59 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.7.1)
2022-12-28 03:42:21 +0100beefbambi(~beefbambi@183.82.25.109)
2022-12-28 03:48:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912)
2022-12-28 03:52:22 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-28 03:52:22 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-28 03:52:22 +0100wroathe(~wroathe@user/wroathe)
2022-12-28 03:54:29 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 256 seconds)
2022-12-28 03:58:14 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-12-28 04:09:39 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-12-28 04:10:31 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-12-28 04:10:31 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-12-28 04:10:31 +0100finn_elijaFinnElija
2022-12-28 04:18:16 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 04:20:43 +0100td_(~td@83.135.9.15) (Ping timeout: 260 seconds)
2022-12-28 04:22:29 +0100td_(~td@83.135.9.57)
2022-12-28 04:22:30 +0100beefbambi(~beefbambi@183.82.25.109) (Read error: Connection reset by peer)
2022-12-28 04:24:03 +0100beefbambi(~beefbambi@183.82.25.109)
2022-12-28 04:29:54 +0100razetime(~quassel@49.207.230.181)
2022-12-28 04:33:20 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2022-12-28 04:41:27 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:4e8c::) (Quit: The Lounge - https://thelounge.chat)
2022-12-28 04:42:50 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:4e8c::)
2022-12-28 04:45:00 +0100jero98772(~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Remote host closed the connection)
2022-12-28 05:04:59 +0100bjourne(~bjorn@94.191.136.87.mobile.tre.se) (Ping timeout: 248 seconds)
2022-12-28 05:09:15 +0100son0p(~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 260 seconds)
2022-12-28 05:12:45 +0100ddellacosta(~ddellacos@143.244.47.100) (Ping timeout: 260 seconds)
2022-12-28 05:22:06 +0100Kaipei(~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 272 seconds)
2022-12-28 05:23:22 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 272 seconds)
2022-12-28 05:32:27 +0100razetime(~quassel@49.207.230.181) (Ping timeout: 260 seconds)
2022-12-28 05:37:32 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2022-12-28 05:38:18 +0100Umeaboy(~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving)
2022-12-28 05:42:45 +0100thongpv(~thongpv87@14.246.240.163) (Ping timeout: 265 seconds)
2022-12-28 05:51:04 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 05:51:38 +0100beefbambi(~beefbambi@183.82.25.109) (Read error: Connection reset by peer)
2022-12-28 05:51:46 +0100dsrt^(~dsrt@76.145.185.103)
2022-12-28 05:52:30 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 05:53:08 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-28 05:53:26 +0100beefbambi(~beefbambi@183.82.25.109)
2022-12-28 05:55:47 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 260 seconds)
2022-12-28 05:55:55 +0100thongpv(~thongpv87@2402:9d80:3ef:b5ba:d843:66e0:e437:37c3)
2022-12-28 05:58:12 +0100beefbambi(~beefbambi@183.82.25.109) (Read error: Connection reset by peer)
2022-12-28 05:58:58 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 06:02:19 +0100money_(~money@2601:40:c580:8530:d025:7b6d:55a0:598c)
2022-12-28 06:02:38 +0100money_(~money@2601:40:c580:8530:d025:7b6d:55a0:598c) (Client Quit)
2022-12-28 06:03:26 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-28 06:03:45 +0100beefbambi(~beefbambi@183.82.25.109)
2022-12-28 06:07:07 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 06:15:53 +0100johnw(~johnw@2600:1700:cf00:db0:68bc:4dc1:caa4:f545)
2022-12-28 06:18:11 +0100beefbambi(~beefbambi@183.82.25.109) (Ping timeout: 264 seconds)
2022-12-28 06:22:58 +0100razetime(~quassel@49.207.230.181)
2022-12-28 06:23:16 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 06:28:17 +0100thongpv(~thongpv87@2402:9d80:3ef:b5ba:d843:66e0:e437:37c3) (Quit: Leaving)
2022-12-28 06:34:13 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds)
2022-12-28 06:35:34 +0100johnw(~johnw@2600:1700:cf00:db0:68bc:4dc1:caa4:f545) (Quit: ZNC - http://znc.in)
2022-12-28 06:52:26 +0100_\____
2022-12-28 06:54:26 +0100titibandit(~titibandi@xdsl-89-0-163-79.nc.de)
2022-12-28 07:05:02 +0100mbuf(~Shakthi@49.204.113.226)
2022-12-28 07:13:41 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 268 seconds)
2022-12-28 07:18:13 +0100son0p(~ff@2604:3d08:5b7f:5540:98a9:2169:15a1:4c7f)
2022-12-28 07:35:44 +0100razetime(~quassel@49.207.230.181) (Ping timeout: 272 seconds)
2022-12-28 07:38:17 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2022-12-28 07:43:30 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-12-28 07:51:13 +0100trev(~trev@user/trev)
2022-12-28 07:54:42 +0100kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 252 seconds)
2022-12-28 07:56:57 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-28 07:57:16 +0100kritzefitz(~kritzefit@debian/kritzefitz)
2022-12-28 07:58:03 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 07:58:23 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Client Quit)
2022-12-28 08:00:57 +0100mei(~mei@user/mei)
2022-12-28 08:03:47 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 08:14:54 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2022-12-28 08:31:58 +0100johnw(~johnw@2600:1700:cf00:db0:e590:8ce7:d874:8b6)
2022-12-28 08:34:30 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:868e:d6ba:423c:8634)
2022-12-28 08:35:58 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-12-28 08:38:46 +0100Kaipei(~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net)
2022-12-28 08:39:49 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-12-28 08:47:14 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-12-28 08:47:40 +0100ph88(~ph88@2001:1c05:2412:3100:2cfc:2cfb:90cd:d349)
2022-12-28 08:49:58 +0100Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection)
2022-12-28 08:53:16 +0100titibandit(~titibandi@xdsl-89-0-163-79.nc.de) (Remote host closed the connection)
2022-12-28 08:56:17 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-12-28 08:58:47 +0100titibandit(~titibandi@xdsl-89-0-163-79.nc.de)
2022-12-28 09:00:22 +0100wroathe(~wroathe@user/wroathe) (Quit: leaving)
2022-12-28 09:13:03 +0100ph88(~ph88@2001:1c05:2412:3100:2cfc:2cfb:90cd:d349) (Quit: Leaving)
2022-12-28 09:17:42 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-12-28 09:25:54 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-12-28 09:35:34 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-28 09:37:30 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 256 seconds)
2022-12-28 09:42:12 +0100cyphase(~cyphase@user/cyphase)
2022-12-28 09:44:10 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-12-28 09:45:12 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2022-12-28 09:52:22 +0100freeside(~mengwong@122.11.214.85)
2022-12-28 09:57:22 +0100jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-12-28 09:58:41 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-12-28 10:00:03 +0100ElliotAlderson[m(~elliotal_@2001:470:69fc:105::bb21) (Quit: You have been kicked for being idle)
2022-12-28 10:01:10 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-12-28 10:04:10 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-28 10:19:02 +0100acidjnk(~acidjnk@p200300d6e7137a537d0b13f896941cd5.dip0.t-ipconnect.de)
2022-12-28 10:33:37 +0100mmhat(~mmh@p200300f1c721be6dee086bfffe095315.dip0.t-ipconnect.de)
2022-12-28 10:37:39 +0100aaronv(~aaronv@user/aaronv)
2022-12-28 10:38:04 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-28 10:42:25 +0100Guest323(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-28 10:45:27 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-12-28 10:57:47 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Remote host closed the connection)
2022-12-28 10:57:47 +0100freeside(~mengwong@122.11.214.85) (Ping timeout: 264 seconds)
2022-12-28 11:02:39 +0100phma(phma@2001:5b0:211f:fc48:f1c3:2878:2421:3588) (Read error: Connection reset by peer)
2022-12-28 11:03:33 +0100phma(phma@2001:5b0:210d:5d58:64bb:4721:a872:cb87)
2022-12-28 11:04:22 +0100 <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 11:05:42 +0100 <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 11:08:10 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
2022-12-28 11:08:41 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2022-12-28 11:15:53 +0100 <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 11:16:14 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-12-28 11:16:18 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-28 11:16:35 +0100 <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 11:16:37 +0100 <romes[m]> :)
2022-12-28 11:17:31 +0100libertyprime(~libertypr@203.96.203.167) (Ping timeout: 252 seconds)
2022-12-28 11:20:35 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 264 seconds)
2022-12-28 11:23:03 +0100Guest323(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2022-12-28 11:23:37 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-12-28 11:25:29 +0100__monty__(~toonn@user/toonn)
2022-12-28 11:31:20 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2022-12-28 11:32:04 +0100freeside(~mengwong@122.11.214.85)
2022-12-28 11:33:23 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-12-28 11:34:02 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-12-28 11:34:12 +0100chiselfuse(~chiselfus@user/chiselfuse)
2022-12-28 11:38:34 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2022-12-28 11:41:24 +0100fserucas(~fserucas@a85-138-107-42.cpe.netcabo.pt)
2022-12-28 11:43:22 +0100freeside(~mengwong@122.11.214.85) (Read error: Connection reset by peer)
2022-12-28 11:43:59 +0100coot(~coot@213.134.171.3)
2022-12-28 11:58:18 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912)
2022-12-28 12:02:34 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Ping timeout: 252 seconds)
2022-12-28 12:06:33 +0100xff0x(~xff0x@ai071162.d.east.v6connect.net)
2022-12-28 12:14:28 +0100titibandit(~titibandi@xdsl-89-0-163-79.nc.de) (Remote host closed the connection)
2022-12-28 12:16:50 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-12-28 12:18:29 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-12-28 12:20:30 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 12:25:23 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 264 seconds)
2022-12-28 12:30:35 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
2022-12-28 12:32:00 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 12:35:31 +0100money__(~money@2601:40:c580:8530:bc04:ad9b:97b3:650b)
2022-12-28 12:35:39 +0100acidjnk(~acidjnk@p200300d6e7137a537d0b13f896941cd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-12-28 13:05:18 +0100 <mauke[m]> huh. my "connection expansion" function might actually be a variant of Dijkstra's algorithm
2022-12-28 13:11:35 +0100acidjnk(~acidjnk@p54ad5adb.dip0.t-ipconnect.de)
2022-12-28 13:14:47 +0100gehmehgeh(~user@user/gehmehgeh)
2022-12-28 13:15:14 +0100freeside(~mengwong@103.252.202.159) (Quit: brb)
2022-12-28 13:15:47 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2022-12-28 13:17:44 +0100acidjnk(~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-12-28 13:18:23 +0100bontaq(~user@71.27.75.65)
2022-12-28 13:18:41 +0100Guest32(~Guest32@176.122.87.241)
2022-12-28 13:18:52 +0100 <Guest32> hello
2022-12-28 13:19:40 +0100 <Guest32> can i ask a question about yesodweb?
2022-12-28 13:19:56 +0100 <chreekat> yep
2022-12-28 13:20:07 +0100 <Guest32> I need to wrap the select field in a div. Is there an easier way than custom field?
2022-12-28 13:21:50 +0100 <Guest32> my css framework wrap some fields in divs
2022-12-28 13:23:38 +0100irrgit__(~irrgit@146.70.27.250) (Remote host closed the connection)
2022-12-28 13:24:57 +0100irrgit__(~irrgit@176.113.74.74)
2022-12-28 13:26:19 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-28 13:26:48 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 13:29:11 +0100fserucas(~fserucas@a85-138-107-42.cpe.netcabo.pt) (Ping timeout: 252 seconds)
2022-12-28 13:48:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 13:49:00 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-12-28 13:50:03 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 13:53:04 +0100dextaa9(~DV@user/dextaa)
2022-12-28 13:54:18 +0100Guest32(~Guest32@176.122.87.241) (Quit: Client closed)
2022-12-28 13:54:51 +0100dextaa(~DV@user/dextaa) (Ping timeout: 252 seconds)
2022-12-28 13:54:51 +0100dextaa9dextaa
2022-12-28 13:55:07 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-12-28 13:59:44 +0100kjak(~kjak@pool-72-66-75-40.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2022-12-28 14:00:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912)
2022-12-28 14:01:59 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-12-28 14:02:14 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-12-28 14:04:23 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Ping timeout: 246 seconds)
2022-12-28 14:07:23 +0100califax(~califax@user/califx)
2022-12-28 14:11:07 +0100 <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 14:11:35 +0100 <kjlid[m]> I don't know what the idiomatic way to do that in Haskell is
2022-12-28 14:12:25 +0100 <kjlid[m]> Or would it make more sense to have a DAO-like type?
2022-12-28 14:12:34 +0100 <mauke[m]> why do you have a typeclass?
2022-12-28 14:13:41 +0100 <kjlid[m]> As a learning exercise
2022-12-28 14:14:31 +0100 <kjlid[m]> And I heard you guys like abstractions so I figured I'd add some typeclasses to impress you
2022-12-28 14:14:53 +0100money__(~money@2601:40:c580:8530:bc04:ad9b:97b3:650b) (Quit: late)
2022-12-28 14:15:47 +0100 <mauke[m]> typeclasses are but one way to abstract things
2022-12-28 14:16:33 +0100kjak(~kjak@pool-72-66-75-40.washdc.fios.verizon.net)
2022-12-28 14:17:50 +0100 <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 14:17:52 +0100 <mauke[m]> it's too vague for me
2022-12-28 14:17:59 +0100 <ggVGc> typeclasses are just fancy dictionaries :)
2022-12-28 14:20:14 +0100 <mauke[m]> in much the same way that function application is just fancy goto
2022-12-28 14:21:28 +0100 <kjlid[m]> https://paste.tomsmeding.com/QZ1azRNB <- I was thinking of doing something like this. See like 23-28
2022-12-28 14:21:32 +0100 <kjlid[m]> err, line 23-28
2022-12-28 14:22:27 +0100 <kjlid[m]> Yes I know this does not compile
2022-12-28 14:24:25 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-12-28 14:24:51 +0100 <mauke[m]> this looks like entry is just a tuple/record of 5 fields
2022-12-28 14:26:05 +0100 <mauke[m]> in which case I wouldn't make addEntry polymorphic; I'd just have it take an Entry
2022-12-28 14:27:04 +0100 <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 14:28:16 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-28 14:28:37 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 14:29:10 +0100 <kjlid[m]> Right
2022-12-28 14:36:11 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-28 14:38:33 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 14:39:59 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 14:46:55 +0100tremon(~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl)
2022-12-28 14:48:35 +0100 <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 14:51:05 +0100 <mauke[m]> can you even build ghc with cabal?
2022-12-28 14:52:41 +0100cheater(~Username@user/cheater)
2022-12-28 14:54:24 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2022-12-28 14:54:57 +0100 <JonathanWatson[m> Well I am trying to build an executable using custom GHC options rather than build GHC itself
2022-12-28 14:55:37 +0100 <JonathanWatson[m> Using these options https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html?highlight=dl#rts-op…
2022-12-28 14:56:17 +0100 <JonathanWatson[m> It could be that "the program" is referring to GHC though
2022-12-28 14:56:44 +0100Sciencentistguy2(~sciencent@hacksoc/ordinary-member)
2022-12-28 14:56:52 +0100 <glguy> Are you using -with-rtsopts ?
2022-12-28 14:58:16 +0100 <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 14:58:34 +0100Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds)
2022-12-28 14:58:34 +0100Sciencentistguy2Sciencentistguy
2022-12-28 14:59:01 +0100 <mauke[m]> if you're not trying to debug ghc, why are you passing runtime debugging options to ghc?
2022-12-28 14:59:03 +0100 <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 14:59:31 +0100 <JonathanWatson[m> glguy: thank you that worked!
2022-12-28 14:59:53 +0100 <JonathanWatson[m> mauke[m]: I am testing a library that uses GHC as a library for dynamic software updating
2022-12-28 15:00:03 +0100 <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 15:00:16 +0100 <mauke[m]> ooh, funky
2022-12-28 15:01:58 +0100fizbin(~fizbin@user/fizbin) (Remote host closed the connection)
2022-12-28 15:02:15 +0100 <JonathanWatson[m> oh well it built but when I run it, it says "bad RTS option: -DL"
2022-12-28 15:02:17 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 15:02:56 +0100 <JonathanWatson[m> with "-with-rtsopts=-DL"
2022-12-28 15:03:36 +0100mei(~mei@user/mei) (Quit: mei)
2022-12-28 15:05:11 +0100 <JonathanWatson[m> but it does recognise the option since it says "unexpected RTS argument: DL" when I remove the hyphen
2022-12-28 15:05:46 +0100 <glguy> Sounds like you didn't build a debug target
2022-12-28 15:06:26 +0100 <JonathanWatson[m> oh it works with "-with-rtsopts=-Dl"
2022-12-28 15:06:37 +0100JonathanWatson[muploaded an image: (8KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/hiJhcJOhNvweGLPceBqbSmbX/image.png >
2022-12-28 15:06:46 +0100 <JonathanWatson[m> it's just the verbose one that doesn't work
2022-12-28 15:08:20 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2022-12-28 15:11:05 +0100Guest91(~Guest91@dyndsl-037-138-067-145.ewe-ip-backbone.de)
2022-12-28 15:12:28 +0100kenran(~user@user/kenran)
2022-12-28 15:12:49 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-12-28 15:13:22 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 15:13:32 +0100 <JonathanWatson[m> ok that's because I'm reading a later version of the docs
2022-12-28 15:15:59 +0100bjourne(~bjorn@94.191.136.87.mobile.tre.se)
2022-12-28 15:17:08 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 15:17:35 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 246 seconds)
2022-12-28 15:18:39 +0100 <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 15:18:59 +0100 <freeside> ... do I want Control.Monad.Combinators.Expr? Text.Parser.Expression? Text.Parsec.Expr?
2022-12-28 15:20:08 +0100 <freeside> they all seem to implement expr, term, table, binary, prefix, postfix
2022-12-28 15:25:49 +0100 <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 15:35:42 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-28 15:35:45 +0100 <ncf> yes that's the intended way https://markkarpov.com/post/megaparsec-7.html#parsercombinators-grows-megaparsec-shrinks
2022-12-28 15:36:32 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-12-28 15:37:48 +0100 <freeside> ah, thank you, appreciate the history
2022-12-28 15:38:17 +0100 <ncf> i suspect the other ones just wouldn't work with megaparsec anyway
2022-12-28 15:41:15 +0100 <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 15:42:39 +0100money__(~money@64-145-79-171.jfk.as54203.net)
2022-12-28 15:42:42 +0100bontaq(~user@71.27.75.65) (Read error: Connection reset by peer)
2022-12-28 15:44:40 +0100finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2022-12-28 15:47:07 +0100 <freeside> i wonder why the decision was made not to re-export them from the Text.Megaparsec module namespace
2022-12-28 15:48:28 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-12-28 15:51:14 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-12-28 15:51:55 +0100 <geekosaur> that's reserved for when they reimplement them for optimization, I think
2022-12-28 15:52:57 +0100Guest91(~Guest91@dyndsl-037-138-067-145.ewe-ip-backbone.de) (Quit: Client closed)
2022-12-28 15:53:38 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-28 15:53:53 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-12-28 16:00:04 +0100n0den1te(~~.~@2401:4900:1c28:5d65:f513:13cc:6745:d0c4)
2022-12-28 16:00:42 +0100jargon(~jargon@174-22-197-118.phnx.qwest.net)
2022-12-28 16:02:24 +0100 <bjourne> how can you accomplish exit early in a monad? e.g: if (a) { doA(); return; } if (b) { doB(); return } ...
2022-12-28 16:03:07 +0100 <geekosaur> you can't; it's a large expression, not really a set of procedures
2022-12-28 16:03:31 +0100 <geekosaur> closest you get is the Cont or ContT monads but those will seriously warp your brain
2022-12-28 16:04:11 +0100 <freeside> why not guard / when / <|>
2022-12-28 16:04:16 +0100 <freeside> https://hackage.haskell.org/package/base-4.17.0.0/docs/Control-Monad.html#g:6
2022-12-28 16:04:20 +0100 <bjourne> i can accomplish it, but only using deeply nested if-else expressions
2022-12-28 16:04:23 +0100 <geekosaur> those work in some cases
2022-12-28 16:05:08 +0100 <freeside> maybe refactor to take advantage of pattern-matching or MultiWayIf?
2022-12-28 16:05:33 +0100n0den1te(~~.~@2401:4900:1c28:5d65:f513:13cc:6745:d0c4) ()
2022-12-28 16:06:08 +0100 <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 16:06:44 +0100money__(~money@64-145-79-171.jfk.as54203.net) (Changing host)
2022-12-28 16:06:44 +0100money__(~money@user/polo)
2022-12-28 16:06:44 +0100ChanServ+o litharge
2022-12-28 16:06:45 +0100litharge+b *!*@64.145.79.171
2022-12-28 16:06:49 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 16:06:50 +0100n0den1te(~n0den1te@223.178.84.197)
2022-12-28 16:06:56 +0100litharge-o litharge
2022-12-28 16:07:36 +0100 <freeside> beyond a certain complexity, decision trees really want to be decision tables
2022-12-28 16:12:49 +0100fserucas(~fserucas@a85-138-107-42.cpe.netcabo.pt)
2022-12-28 16:27:36 +0100money___(~money@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-12-28 16:28:09 +0100money__(~money@user/polo) (Ping timeout: 256 seconds)
2022-12-28 16:28:29 +0100dsrt^(~dsrt@76.145.185.103) (Remote host closed the connection)
2022-12-28 16:32:57 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-28 16:34:25 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-28 16:34:43 +0100beefbambi(~beefbambi@49.204.133.80)
2022-12-28 16:38:29 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 16:43:07 +0100ddellacosta(~ddellacos@143.244.47.68)
2022-12-28 16:44:08 +0100razetime(~quassel@49.207.196.133)
2022-12-28 16:47:29 +0100Sauvin(~sauvin@user/Sauvin) (Ping timeout: 246 seconds)
2022-12-28 16:51:56 +0100razetime(~quassel@49.207.196.133) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-12-28 16:54:36 +0100Sauvin(~sauvin@user/Sauvin)
2022-12-28 16:54:47 +0100beefbambi(~beefbambi@49.204.133.80) (Read error: Connection reset by peer)
2022-12-28 16:55:12 +0100sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 16:55:21 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds)
2022-12-28 16:55:28 +0100beefbambi(~beefbambi@49.204.133.80)
2022-12-28 16:55:36 +0100razetime(~quassel@49.207.196.133)
2022-12-28 16:59:21 +0100sayola(~sayola@dslb-002-201-085-035.002.201.pools.vodafone-ip.de)
2022-12-28 16:59:23 +0100sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 246 seconds)
2022-12-28 17:03:29 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 17:07:10 +0100Sauvin(~sauvin@user/Sauvin) (Quit: Leaving)
2022-12-28 17:07:55 +0100Sauvin(~sauvin@user/Sauvin)
2022-12-28 17:09:00 +0100money___(~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: late)
2022-12-28 17:10:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 17:10:58 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 17:17:29 +0100beefbambi(~beefbambi@49.204.133.80) (Ping timeout: 260 seconds)
2022-12-28 17:17:46 +0100trev_(~trev@109.252.35.99)
2022-12-28 17:18:21 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 17:19:59 +0100cheater(~Username@user/cheater) (Ping timeout: 264 seconds)
2022-12-28 17:20:57 +0100trev(~trev@user/trev) (Ping timeout: 255 seconds)
2022-12-28 17:24:08 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:868e:d6ba:423c:8634) (Quit: WeeChat 2.8)
2022-12-28 17:24:56 +0100jpds3jpds
2022-12-28 17:29:13 +0100notzmv(~zmv@user/notzmv)
2022-12-28 17:39:56 +0100money__(~money@2601:40:c580:8530:9c03:7900:f37d:8622)
2022-12-28 17:40:22 +0100money__(~money@2601:40:c580:8530:9c03:7900:f37d:8622) (Changing host)
2022-12-28 17:40:22 +0100money__(~money@user/polo)
2022-12-28 17:40:22 +0100ChanServ+o litharge
2022-12-28 17:40:23 +0100litharge+b *!*@2601:40:c580:8530:9c03:7900:f37d:8622
2022-12-28 17:40:34 +0100litharge-o litharge
2022-12-28 17:43:36 +0100money__(~money@user/polo) (Client Quit)
2022-12-28 17:44:15 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-12-28 17:44:41 +0100acidjnk(~acidjnk@p200300d6e7137a4229c4b6108dcb2f5b.dip0.t-ipconnect.de)
2022-12-28 17:47:30 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 17:48:38 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 17:49:09 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-12-28 17:54:03 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-28 18:00:05 +0100titibandit(~titibandi@xdsl-89-0-163-79.nc.de)
2022-12-28 18:00:50 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-12-28 18:01:24 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-28 18:01:25 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-28 18:01:25 +0100wroathe(~wroathe@user/wroathe)
2022-12-28 18:01:42 +0100mbuf(~Shakthi@49.204.113.226) (Quit: Leaving)
2022-12-28 18:05:30 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 18:06:47 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 18:09:47 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 246 seconds)
2022-12-28 18:10:05 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-12-28 18:11:15 +0100califax(~califax@user/califx)
2022-12-28 18:11:33 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 18:15:52 +0100haasn(~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2022-12-28 18:17:45 +0100money__(~money@c-73-188-62-22.hsd1.pa.comcast.net)
2022-12-28 18:24:30 +0100money__(~money@c-73-188-62-22.hsd1.pa.comcast.net) (Quit: late)
2022-12-28 18:25:04 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 18:26:34 +0100econo(uid147250@user/econo)
2022-12-28 18:31:12 +0100money__(~money@2601:40:c580:8530:215e:3848:10c5:78d9)
2022-12-28 18:36:55 +0100trev_(~trev@109.252.35.99) (Remote host closed the connection)
2022-12-28 18:36:59 +0100koz_koz
2022-12-28 18:40:41 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2022-12-28 18:41:21 +0100razetime1(~Thunderbi@49.207.196.133)
2022-12-28 18:42:27 +0100gehmehgeh(~user@user/gehmehgeh)
2022-12-28 18:53:11 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-28 18:54:24 +0100jakalx(~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
2022-12-28 18:54:25 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-28 18:57:02 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Ping timeout: 246 seconds)
2022-12-28 18:57:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912)
2022-12-28 18:58:32 +0100razetime1(~Thunderbi@49.207.196.133) (Quit: razetime1)
2022-12-28 18:58:35 +0100razetime(~quassel@49.207.196.133) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-12-28 18:59:50 +0100razetime(~Thunderbi@49.207.196.133)
2022-12-28 19:01:00 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 272 seconds)
2022-12-28 19:05:10 +0100razetime(~Thunderbi@49.207.196.133) (Quit: razetime)
2022-12-28 19:12:33 +0100Sgeo(~Sgeo@user/sgeo)
2022-12-28 19:14:15 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-12-28 19:25:20 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 246 seconds)
2022-12-28 19:27:37 +0100money__(~money@2601:40:c580:8530:215e:3848:10c5:78d9) (Quit: late)
2022-12-28 19:29:59 +0100Typedfern(~Typedfern@221.red-83-37-36.dynamicip.rima-tde.net) (Ping timeout: 252 seconds)
2022-12-28 19:36:26 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912) (Remote host closed the connection)
2022-12-28 19:39:53 +0100mmhat(~mmh@p200300f1c721be6dee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-12-28 19:40:16 +0100mmhat(~mmh@p200300f1c721be80ee086bfffe095315.dip0.t-ipconnect.de)
2022-12-28 19:42:27 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3964:1012:a01c:6912)
2022-12-28 19:42:39 +0100Typedfern(~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net)
2022-12-28 19:48:38 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-12-28 19:48:43 +0100money__(~money@2601:40:c580:8530:215e:3848:10c5:78d9)
2022-12-28 19:49:40 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-28 19:50:29 +0100money__(~money@2601:40:c580:8530:215e:3848:10c5:78d9) (Changing host)
2022-12-28 19:50:29 +0100money__(~money@user/polo)
2022-12-28 19:50:29 +0100ChanServ+o litharge
2022-12-28 19:50:30 +0100litharge+b *!*@2601:40:c580:8530:215e:3848:10c5:78d9
2022-12-28 19:50:41 +0100litharge-o litharge
2022-12-28 19:51:27 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-28 19:52:35 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 19:54:08 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-12-28 19:56:01 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-28 20:02:02 +0100money__(~money@user/polo) ()
2022-12-28 20:04:59 +0100trev(~trev@user/trev)
2022-12-28 20:06:36 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-28 20:06:45 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 20:09:41 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-12-28 20:12:34 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 272 seconds)
2022-12-28 20:14:18 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 20:20:33 +0100fizbin(~fizbin@user/fizbin)
2022-12-28 20:24:00 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-12-28 20:27:14 +0100mc47(~mc47@xmonad/TheMC47)
2022-12-28 20:29:26 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 20:29:40 +0100Guest323(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-28 20:31:23 +0100acidjnk(~acidjnk@p200300d6e7137a4229c4b6108dcb2f5b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-12-28 20:39:51 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-28 20:41:07 +0100beefbambi(~beefbambi@183.82.177.237)
2022-12-28 20:41:11 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
2022-12-28 20:43:19 +0100acidjnk(~acidjnk@p200300d6e7137a42b47c8252f7d3d407.dip0.t-ipconnect.de)
2022-12-28 20:49:31 +0100beefbambi(~beefbambi@183.82.177.237) (Read error: Connection reset by peer)
2022-12-28 20:49:50 +0100beefbambi(~beefbambi@37.19.205.196)
2022-12-28 20:50:53 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-12-28 20:56:13 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 21:00:54 +0100Ram-Z(~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds)
2022-12-28 21:02:51 +0100Ram-Z(~Ram-Z@li1814-254.members.linode.com)
2022-12-28 21:07:47 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-28 21:15:09 +0100Topsi(~Topsi@dialin-80-228-141-004.ewe-ip-backbone.de)
2022-12-28 21:18:47 +0100beefbambi(~beefbambi@37.19.205.196) (Ping timeout: 264 seconds)
2022-12-28 21:19:23 +0100beefbambi(~beefbambi@183.82.177.237)
2022-12-28 21:23:28 +0100 <ddellacosta> fast-logger is thread-safe? Code suggests so but I don't see it explicitly documented anywhere
2022-12-28 21:30:26 +0100 <ddellacosta> nevermind https://github.com/kazu-yamamoto/logger/issues/203
2022-12-28 21:30:50 +0100 <EvanR> oof
2022-12-28 21:31:05 +0100 <ddellacosta> yeah :-(
2022-12-28 21:31:15 +0100johnw(~johnw@2600:1700:cf00:db0:e590:8ce7:d874:8b6) (Quit: ZNC - http://znc.in)
2022-12-28 21:32:05 +0100 <dsal> Is the problem just logs not happening in the right order?
2022-12-28 21:32:20 +0100 <ddellacosta> I mean, that's not such a big deal if I don't care about ordering, that's true
2022-12-28 21:32:35 +0100 <geekosaur> lookslike it
2022-12-28 21:32:43 +0100 <ddellacosta> but, it does make me want to take a closer look at the code
2022-12-28 21:33:38 +0100 <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 21:34:20 +0100 <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 21:34:24 +0100 <EvanR> if precise timestamps are recorded then it's not true they logs will have increasing (non-decreasing?) timestamps
2022-12-28 21:34:55 +0100fizbin_(~fizbin@user/fizbin)
2022-12-28 21:34:59 +0100notzmv(~zmv@user/notzmv)
2022-12-28 21:35:00 +0100 <EvanR> whatever that's worth
2022-12-28 21:36:03 +0100 <monochrom> Oh, it's saying out of order for messages from the same thread.
2022-12-28 21:36:31 +0100 <EvanR> how the heck
2022-12-28 21:38:42 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 272 seconds)
2022-12-28 21:39:27 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-12-28 21:39:49 +0100pavonia(~user@user/siracusa)
2022-12-28 21:40:54 +0100 <monochrom> But then, I don't understand why the analysis explains the obersvation :)
2022-12-28 21:41:13 +0100 <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 21:41:34 +0100 <monochrom> What if "the final result" means the log? :)
2022-12-28 21:41:56 +0100 <unit73e> in that case yeah I would care :p but that would create a big bottleneck
2022-12-28 21:42:05 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-28 21:42:17 +0100 <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 21:42:42 +0100fizbin__(~fizbin@user/fizbin)
2022-12-28 21:43:12 +0100 <monochrom> What is the MonadFix instance in this case?
2022-12-28 21:45:32 +0100 <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 21:46:05 +0100fizbin_(~fizbin@user/fizbin) (Ping timeout: 246 seconds)
2022-12-28 21:46:33 +0100 <monochrom> Wait, it is a type error, not a run-time error?
2022-12-28 21:46:46 +0100 <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 21:46:46 +0100 <geekosaur> solveWanteds is the typechecker, yes
2022-12-28 21:46:54 +0100 <jean-paul[m]> It is a type error yes, sorry for not specifying.
2022-12-28 21:47:30 +0100Topsi(~Topsi@dialin-80-228-141-004.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
2022-12-28 21:47:41 +0100 <geekosaur> but MonadFix is very likely to be why solveWanteds is looping
2022-12-28 21:48:14 +0100 <monochrom> Then I don't know.
2022-12-28 21:48:38 +0100 <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 21:49:11 +0100 <geekosaur> more complicated than that; you can't tie the knot at type level, only at value level using laziness
2022-12-28 21:49:41 +0100 <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 21:50:16 +0100 <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 21:50:52 +0100 <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 21:51:00 +0100 <EvanR> ultrafinite types
2022-12-28 21:51:01 +0100 <geekosaur> this shouldn't happen normally
2022-12-28 21:51:31 +0100 <geekosaur> well, I guess I can't say that with certainty, iirc you can trigger it with type families
2022-12-28 21:52:17 +0100 <jean-paul[m]> I am also learning to use Reflex ... which seems to use type families a lot.
2022-12-28 21:54:17 +0100beefbambi(~beefbambi@183.82.177.237) (Ping timeout: 268 seconds)
2022-12-28 21:54:31 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-28 21:56:28 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:2aee:78bc:c5aa:c32c)
2022-12-28 21:56:44 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-28 21:58:23 +0100beefbambi(~beefbambi@183.82.177.237)
2022-12-28 21:58:32 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:2aee:78bc:c5aa:c32c) (Client Quit)
2022-12-28 22:01:41 +0100monochromhas a toy program that uses both BangPatterns and NumericUnderscores. OK that's it, let's just go GHC2021 haha.)
2022-12-28 22:01:45 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-12-28 22:03:37 +0100 <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 22:04:17 +0100trev(~trev@user/trev) (Remote host closed the connection)
2022-12-28 22:15:09 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-12-28 22:15:26 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 246 seconds)
2022-12-28 22:17:18 +0100fizbin__fizbin
2022-12-28 22:17:36 +0100wroathe(~wroathe@user/wroathe) (Read error: Connection reset by peer)
2022-12-28 22:18:02 +0100 <fizbin> Does anyone know how to get coverage of an executable's "main" module out of stack?
2022-12-28 22:18:34 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-12-28 22:20:06 +0100 <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 22:21:10 +0100random-jellyfish(~random-je@user/random-jellyfish) (Client Quit)
2022-12-28 22:21:57 +0100 <glguy> fizbin: are you already looking at https://wiki.haskell.org/Haskell_program_coverage#Hpc_with_a_Cabal_project ?
2022-12-28 22:22:11 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-12-28 22:22:30 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-12-28 22:24:08 +0100Xeroine(~Xeroine@user/xeroine) (Read error: Connection reset by peer)
2022-12-28 22:24:22 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-28 22:27:53 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-28 22:30:40 +0100beefbambi(~beefbambi@183.82.177.237) (Read error: Connection reset by peer)
2022-12-28 22:31:31 +0100beefbambi(~beefbambi@183.82.177.237)
2022-12-28 22:32:13 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-12-28 22:32:25 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-12-28 22:32:37 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-12-28 22:33:51 +0100zer0bitz(~zer0bitz@196.244.192.62) (Read error: Connection reset by peer)
2022-12-28 22:40:04 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 260 seconds)
2022-12-28 22:40:29 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-12-28 22:45:07 +0100biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-12-28 22:48:39 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-12-28 22:50:57 +0100biberu(~biberu@user/biberu)
2022-12-28 22:52:24 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 22:54:17 +0100cheater(~Username@user/cheater)
2022-12-28 22:55:29 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 22:56:45 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 260 seconds)
2022-12-28 22:58:03 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 248 seconds)
2022-12-28 22:59:27 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Client Quit)
2022-12-28 23:00:50 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-12-28 23:01:01 +0100n0den1te(~n0den1te@223.178.84.197) (Quit: leaving)
2022-12-28 23:03:22 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 265 seconds)
2022-12-28 23:06:21 +0100 <geekosaur> mm, nheko still dumps core when checking my matrix account, forgot about that
2022-12-28 23:07:04 +0100titibandit(~titibandi@xdsl-89-0-163-79.nc.de) (Remote host closed the connection)
2022-12-28 23:11:22 +0100 <monochrom> yikes haha
2022-12-28 23:12:33 +0100freeside(~mengwong@103.252.202.159)
2022-12-28 23:14:06 +0100 <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 23:14:27 +0100ozkutuk53(~ozkutuk@176.240.173.153) (Ping timeout: 256 seconds)
2022-12-28 23:25:08 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 246 seconds)
2022-12-28 23:27:24 +0100 <bjourne> how do you write an empty do block?
2022-12-28 23:27:53 +0100 <Rembane> bjourne: It's very hard. What makes you want to do that?
2022-12-28 23:28:12 +0100 <bjourne> if without else
2022-12-28 23:28:57 +0100 <Rembane> Perhaps guard can help you there.
2022-12-28 23:28:59 +0100 <Rembane> :t guard
2022-12-28 23:29:00 +0100 <lambdabot> Alternative f => Bool -> f ()
2022-12-28 23:29:05 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 23:30:39 +0100 <sm> or when or unless. Also return () often works.
2022-12-28 23:30:46 +0100 <EvanR> :t do {}
2022-12-28 23:30:48 +0100 <lambdabot> error: Empty 'do' block
2022-12-28 23:31:05 +0100 <EvanR> "you can't"
2022-12-28 23:32:19 +0100 <mauke[m]> :t do { M.empty }
2022-12-28 23:32:21 +0100 <lambdabot> M.Map k a
2022-12-28 23:32:39 +0100cheater_(~Username@user/cheater)
2022-12-28 23:33:58 +0100cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2022-12-28 23:34:04 +0100 <dsal> > do do do do do do do do do do do empty :: Maybe ()
2022-12-28 23:34:05 +0100 <lambdabot> Nothing
2022-12-28 23:34:28 +0100cheater__(~Username@user/cheater)
2022-12-28 23:34:28 +0100cheater__cheater
2022-12-28 23:34:40 +0100 <shapr> I like that song
2022-12-28 23:34:50 +0100 <monochrom> No, not guard. when.
2022-12-28 23:35:12 +0100 <monochrom> Alternatively, "empty do block" is pure().
2022-12-28 23:35:40 +0100 <Rembane> But then the do block has content even though it doesn't do anything.
2022-12-28 23:35:52 +0100 <Rembane> I suppose you could see it in a syntactic or semantic way.
2022-12-28 23:35:55 +0100 <monochrom> Well yeah it's an XY problem.
2022-12-28 23:36:14 +0100 <EvanR> is the opposite of empty do = mfix return
2022-12-28 23:36:21 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-12-28 23:36:29 +0100 <monochrom> "I want to do nothing. I think it is achieved by an empty do block."
2022-12-28 23:36:43 +0100 <dsal> :t do Nothing
2022-12-28 23:36:44 +0100 <lambdabot> Maybe a
2022-12-28 23:37:15 +0100 <Rembane> And then things go wrong and I can take care of it like this:
2022-12-28 23:37:17 +0100 <Rembane> > fix error
2022-12-28 23:37:18 +0100 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
2022-12-28 23:37:21 +0100 <Rembane> :D
2022-12-28 23:37:31 +0100 <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 23:38:24 +0100cheater_(~Username@user/cheater) (Ping timeout: 272 seconds)
2022-12-28 23:38:26 +0100 <monochrom> Semantically there is always two branches and there is always content in each, even if the content may be trivial.
2022-12-28 23:39:21 +0100 <bjourne> :) true but programmers care about aestethics so we don't write if (blah) { ... } else { } if we dont need the else
2022-12-28 23:39:30 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db)
2022-12-28 23:39:36 +0100 <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 23:40:10 +0100 <geekosaur[m]> bjourne, understand that if is not a statement, it is an expression
2022-12-28 23:40:13 +0100 <monochrom> Programmers should care about both aesthetics and semantics.
2022-12-28 23:40:31 +0100 <geekosaur[m]> everything in haskell is an expression
2022-12-28 23:40:37 +0100 <dsal> bjourne: if is an expression. What does it mean to say `let a = if False then 1` ?
2022-12-28 23:40:42 +0100 <bjourne> i'm well aware of that
2022-12-28 23:40:57 +0100 <monochrom> For some reason, usually FP tends to make you more painfully aware of semantics.
2022-12-28 23:41:38 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:e41e:1f5b:1741:59ed)
2022-12-28 23:41:48 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-12-28 23:41:53 +0100 <dsal> I rather dislike `if-then-else` in haskell. `bool` is usually worse, though.
2022-12-28 23:42:33 +0100CodeInTheShade(~CodeInThe@2a02:c7c:5256:d500:49bd:7435:2cab:65db) (Client Quit)
2022-12-28 23:42:40 +0100 <monochrom> Is that just because of boolean being much less expressive that general ADT cases?
2022-12-28 23:42:41 +0100 <bjourne> yeah similar to how c makes you painfully aware of how the heap works
2022-12-28 23:43:04 +0100 <mauke[m]> technical note: C doesn't have a heap
2022-12-28 23:43:14 +0100 <monochrom> Because the same consideration applies for "what if in some case I want to 'do nothing'".
2022-12-28 23:44:04 +0100 <mauke[m]> technical note: gcc has a ?: operator with an optional 'then' branch
2022-12-28 23:44:27 +0100 <davean> mauke[m]: which definition are you using to say C lacks a heap?
2022-12-28 23:44:55 +0100 <geekosaur[m]> C doesn't define one, malloc/free are defined by a library
2022-12-28 23:45:10 +0100 <mauke[m]> the standard library is part of C
2022-12-28 23:45:25 +0100 <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 23:45:49 +0100 <mauke[m]> oh no, middle endian control flow
2022-12-28 23:46:04 +0100 <mauke[m]> davean: ISO 9899:something something
2022-12-28 23:46:45 +0100 <monochrom> Let's just ignore the pedantics.
2022-12-28 23:46:47 +0100 <davean> mauke[m]: It doesn't *mention* a heap
2022-12-28 23:47:19 +0100 <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 23:47:45 +0100 <monochrom> Languages are defined by actual users. Including both conversations and C.
2022-12-28 23:48:01 +0100 <mauke[m]> how big is the average community?
2022-12-28 23:48:04 +0100 <davean> I mean "heap memory" is a description of dynamic, non-stack memory
2022-12-28 23:48:10 +0100 <davean> and C certainly has that in that specification
2022-12-28 23:48:17 +0100 <davean> so ... it has a heap technically.
2022-12-28 23:48:40 +0100 <davean> You might use a non-standard definition of heap, and then it wouldn't
2022-12-28 23:48:43 +0100 <mauke[m]> I'm not sure C has a stack either, so "non-stack" may be ill-defined
2022-12-28 23:49:42 +0100 <EvanR> now you all are making me question "how the heap works" xD
2022-12-28 23:49:46 +0100 <EvanR> as a concept
2022-12-28 23:50:07 +0100 <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 23:50:35 +0100 <mauke[m]> sorry for making you painfully aware :-)
2022-12-28 23:50:52 +0100 <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 23:50:54 +0100 <EvanR> starting with, does it even (work)
2022-12-28 23:51:58 +0100 <monochrom> In the same way "Python makes you painfully aware of static type checking" precisely because it doesn't have it.
2022-12-28 23:52:36 +0100 <monochrom> And of course on the flip side "Haskell makes you painfully aware of dynamic type checking" to be fair haha.
2022-12-28 23:52:40 +0100 <mauke[m]> davean: I think we're getting close to "monads are just containers" territory
2022-12-28 23:53:16 +0100 <davean> No monads aren't containers, they're a set of operators and laws
2022-12-28 23:53:24 +0100 <davean> anything that does that is a monad very clearly.
2022-12-28 23:53:28 +0100 <mauke[m]> in that I claim "heap" (like "containers") is not a well-defined category, so its semantics are murky
2022-12-28 23:54:03 +0100 <davean> Many monads *are not containers* in that they contain nothing.
2022-12-28 23:54:10 +0100 <davean> :-p
2022-12-28 23:54:22 +0100 <mauke[m]> for example?
2022-12-28 23:54:23 +0100 <davean> eh
2022-12-28 23:54:32 +0100 <davean> no, I'm walking that back, because thats not quite what I meant to say
2022-12-28 23:54:42 +0100 <davean> and its not interesting anyway
2022-12-28 23:55:00 +0100 <monochrom> Monads are heaps. There.
2022-12-28 23:55:04 +0100 <davean> particularly because this is a Haskell channel, and we have a seperate definition of Monad
2022-12-28 23:55:17 +0100 <Jadesheit[m]> the `(->) r` monad?
2022-12-28 23:55:33 +0100 <mauke[m]> that's a container. more specifically, it's a map
2022-12-28 23:57:21 +0100mikoto-chan(~mikoto-ch@164.5.249.78)
2022-12-28 23:58:41 +0100 <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 23:59:33 +0100 <mauke[m]> to which you could reply "well, that's just what I mean by 'heap'"