Home liberachat/#haskell: Logs Calendar

Logs on 2023-05-08 (liberachat/#haskell)

00:00:09 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
00:08:09 × oo_miguel quits (~Thunderbi@77.252.47.78) (Ping timeout: 256 seconds)
00:10:02 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
00:10:37 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
00:10:56 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
00:13:08 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:13:08 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:13:08 wroathe joins (~wroathe@user/wroathe)
00:13:11 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
00:16:39 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
00:16:55 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
00:18:25 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:19:44 × pyook quits (~puke@user/puke) (Ping timeout: 248 seconds)
00:20:00 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 268 seconds)
00:23:57 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
00:31:45 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
00:33:29 × Achylles quits (~Achylles_@45.182.57.30) (Remote host closed the connection)
00:34:37 freeside joins (~mengwong@103.252.202.85)
00:36:16 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
00:38:15 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
00:39:19 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 260 seconds)
00:43:03 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
00:45:36 CalculusCats parts (NyaaTheKit@user/calculuscat) (Meow Meow Meow Meow Meow Meow Meow...)
00:58:48 freeside joins (~mengwong@103.252.202.85)
01:02:38 × Yumemi_ quits (~Yumemi@chamoin.net) (Quit: .)
01:09:57 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 268 seconds)
01:11:28 Yumemi joins (~Yumemi@chamoin.net)
01:11:30 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:39 nate2 joins (~nate@98.45.169.16)
01:17:25 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
01:17:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:18:41 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
01:20:03 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
01:20:34 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:8124:9f4a:3c7a:eaa0) (Remote host closed the connection)
01:24:39 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
01:27:54 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
01:28:10 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
01:28:50 freeside joins (~mengwong@103.252.202.85)
01:30:07 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:30:47 × xff0x quits (~xff0x@2405:6580:b080:900:6d1c:d01c:159d:3310) (Ping timeout: 264 seconds)
01:32:05 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
01:33:50 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
01:34:08 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
01:34:17 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
01:34:51 pyook joins (~puke@user/puke)
01:35:59 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 256 seconds)
01:38:17 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
01:40:42 freeside joins (~mengwong@103.252.202.85)
01:40:47 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
01:45:03 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 256 seconds)
01:46:21 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
01:50:26 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
01:50:28 merijn joins (~merijn@c-001-001-013.client.esciencecenter.eduvpn.nl)
01:51:39 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
01:52:03 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
01:52:03 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
01:52:03 wroathe joins (~wroathe@user/wroathe)
01:52:24 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
01:52:40 × emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
01:53:16 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
01:58:24 × rf quits (~rf@2605:59c8:179c:f610:714:d89a:5981:51ab) (Ping timeout: 248 seconds)
02:02:58 freeside joins (~mengwong@103.252.202.85)
02:04:44 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:04:44 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:04:44 finn_elija is now known as FinnElija
02:11:28 × mmhat quits (~mmh@p200300f1c706687dee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
02:12:40 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
02:13:07 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 260 seconds)
02:13:17 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:18:04 nate2 joins (~nate@98.45.169.16)
02:18:04 × Yumemi quits (~Yumemi@chamoin.net) (Quit: .)
02:20:57 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
02:23:45 × td_ quits (~td@i53870927.versanet.de) (Ping timeout: 240 seconds)
02:23:57 × merijn quits (~merijn@c-001-001-013.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
02:25:21 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Ping timeout: 250 seconds)
02:25:54 td_ joins (~td@i53870906.versanet.de)
02:33:01 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
02:36:02 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
02:39:57 cheater_ joins (~Username@user/cheater)
02:40:35 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
02:40:42 cheater_ is now known as cheater
02:42:27 × jero98772 quits (~jero98772@190.158.28.80) (Remote host closed the connection)
02:51:13 nick4 joins (~nick@2600:8807:9103:b700:c91d:758a:9123:f8a2)
02:52:26 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
02:53:03 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
02:57:35 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 256 seconds)
03:00:00 × Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.)
03:01:09 Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
03:05:01 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
03:06:08 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
03:07:13 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
03:11:10 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
03:17:28 evin joins (~evin@118.140.166.145)
03:18:50 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 268 seconds)
03:19:07 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
03:20:58 Yumemi joins (~Yumemi@chamoin.net)
03:23:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
03:24:57 × evin quits (~evin@118.140.166.145) (Quit: Konversation terminated!)
03:29:08 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
03:33:20 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
03:39:35 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
03:44:14 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 250 seconds)
04:01:19 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
04:03:39 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:13:05 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds)
04:20:24 merijn joins (~merijn@c-001-001-013.client.esciencecenter.eduvpn.nl)
04:20:31 <Inst_> ugh, this is embarrassing
04:21:23 <Inst_> i have an algorithm that works but is unperformant with lists, and doesn't work and is performant with maps
04:23:00 hugo joins (znc@verdigris.lysator.liu.se)
04:24:30 × nick4 quits (~nick@2600:8807:9103:b700:c91d:758a:9123:f8a2) (Ping timeout: 260 seconds)
04:26:40 × merijn quits (~merijn@c-001-001-013.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
04:26:43 <Inst_> ah, figured it out
04:26:47 <Inst_> keys are unique
04:32:08 <mauke> I should write a book: Blazing Fast Algorithms (that Don't Work)
04:33:24 <jade[m]1> hahaha
04:33:54 freeside joins (~mengwong@122.11.248.245)
04:37:55 <Axman6> data ProbabalisticBool = Hmm'YeahCouldBeIGuess
04:46:11 <jackdk> `data AustralianBool = Yeah AustralianBool | Nah AustralianBool | Mate`
04:49:33 <[Leary]> `data KiwiBool = Yeah | Nah | YeahNah`
04:51:32 <mauke> Yeah (Nah (Nah (Yeah Mate)))
04:55:57 Square joins (~Square@user/square)
04:58:57 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
04:59:31 <Square> Is there a mechanism (or languge extension) that can achieve the same things as RecordWildcards, but for classes? Ie, if I had *data type* SomeType i can write foo :: SomeType -> Int :: foo (SomeType {..}) = undefined
05:00:10 <Square> Now, could I do the same thing if i changed SomeType into a class?
05:01:47 <jade[m]1> if the signature had a constraint instead you wouldn't be able to know whether it's a record - and it shouldn't matter
05:02:05 <jade[m]1> classes in haskell don't have fields.
05:02:06 <jade[m]1> do you have an example of what you want to do?
05:03:42 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 265 seconds)
05:05:58 <Square> jade[m]1, I had a big data type A for which i wanted to create access limiting view on. Before I picked the parts from A and passed them around. Now I had hoped to create a ReadAccess class for A.
05:07:01 <jade[m]1> that sounds more like you want a specific datatype (like a record) that just holds all the fields that are allowed to be seen
05:07:31 <Square> yeah, maybe thats the way.
05:07:31 <jade[m]1> then you can write `limitView :: SomeData -> LimitedData`
05:11:29 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
05:17:42 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:31:27 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 260 seconds)
05:33:00 × werneta_ quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 250 seconds)
05:33:36 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
05:33:50 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
05:36:21 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
05:38:35 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 264 seconds)
05:43:49 freeside joins (~mengwong@122.11.248.245)
05:48:20 trev joins (~trev@user/trev)
05:48:45 <Inst_> mauke: tbh, you could actually write a decent DSA book based on that comment
05:48:57 <Inst_> instead of teaching algorithms, you'd teach methods of designing algorithms
05:52:59 michalz joins (~michalz@185.246.207.221)
05:56:24 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
06:00:45 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
06:03:04 attacker0211 joins (~attacker0@lnsm5-toronto11-142-116-133-30.internet.virginmobile.ca)
06:05:46 freeside_ joins (~mengwong@202.161.55.11)
06:07:25 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 256 seconds)
06:10:54 × attacker0211 quits (~attacker0@lnsm5-toronto11-142-116-133-30.internet.virginmobile.ca) (Quit: Connection closed)
06:12:09 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
06:13:43 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
06:17:38 × lav quits (~pi@wikipedia/maddy-from-celeste) (Ping timeout: 250 seconds)
06:18:08 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 248 seconds)
06:22:35 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
06:24:44 lortabac joins (~lortabac@2a01:e0a:541:b8f0:2d52:c5aa:cfa9:3177)
06:29:26 lav joins (~pi@wikipedia/maddy-from-celeste)
06:30:34 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
06:34:31 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
06:36:43 gentauro joins (~gentauro@user/gentauro)
06:37:10 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
06:40:40 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
06:41:59 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 256 seconds)
06:45:34 acidjnk joins (~acidjnk@p200300d6e7072f29d032399e5afc9b1f.dip0.t-ipconnect.de)
06:45:40 <mauke> you could even wrap it in a class
06:46:23 <mauke> class HasLimitView a where { limitView :: a -> LimitedData }
06:46:59 <mauke> instance HasLimitView SomeType where { limitView SomeType{..} = LimitedData{..} }
06:47:13 <mauke> instance HasLimitView LimitedData where { limitView = id }
06:48:00 <mauke> foo :: (HasLimitView a) => a -> Int; foo (limitView -> LimitedData{..}) = ...
06:48:58 <mauke> although since the only thing you can do with `(HasLimitView a) => a` is to call limitView on it, it might make more sense for foo to take a LimitedData directly
06:49:21 × Square quits (~Square@user/square) (Ping timeout: 256 seconds)
06:52:26 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
06:53:12 <talismanick> Before feeding a string to (atto)parsec, how might I pad parentheses and brackets with spaces or achieve the effect of that?
06:54:07 <jade[m]1> why do you want to preprocess that?
06:54:25 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
06:54:30 <jade[m]1> can you not parse and take into account whitespace when building an AST?
06:54:51 <talismanick> jade[m]1: because it's annoying to parse whitespace and handle edge cases
06:55:34 <talismanick> Everything's great if I can vacuum String data into Text, do stuff with it, and only spit back out String at endpoints, but, even with laziness, fmap'ing over [Char] seems... poorly advised
06:55:46 <jade[m]1> I would suggest to just use a lexer/lexeme parser and wrap your primitives with that - I would assume that padding things beforehand would be much much more complicated
06:55:47 <talismanick> fmap'ing a pad function, that is
06:56:40 <talismanick> jade[m]1: You think? What I just suggested would be really easy, just... inefficient (I think)
06:56:53 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
06:57:10 <jade[m]1> well, you'd have to essentially parse the file, pad and then reparse
06:57:20 <jade[m]1> because for example you wouldn't wanna pad parantheses in strings
06:57:30 <jade[m]1> so you have context to consider
06:57:38 <talismanick> oh, that's true
06:57:49 <jackdk> talismanick: perhaps not as complicated as you fear. See "Design Patterns for Parser Combinators" https://www.youtube.com/watch?v=RwzX1XltOGY (talk); https://dl.acm.org/doi/10.1145/3471874.3472984 (paper)
06:58:06 <talismanick> jackdk: thanks, I'll take a look
06:58:27 <jade[m]1> Using a lexer and wrapping your primitives in them makes parsing whitespace pretty ergonomic in my experience
06:58:29 <jackdk> in particular, the trick about making each lexeme consume all following whitespace
06:58:34 <jackdk> jade[m]1: ++
06:58:59 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 268 seconds)
06:59:28 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
07:08:19 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:12:00 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
07:16:00 nate2 joins (~nate@98.45.169.16)
07:17:27 <tomsmeding> yep, that trick is the one you're looking for
07:18:01 <tomsmeding> mind to consume all _following_ whitespace: consuming all preceding whitespace also works, but results in a whole bunch of additional uses of 'try' and inefficiency around large blocks of whitespace/comments
07:19:43 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 260 seconds)
07:21:04 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
07:26:23 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
07:28:37 gmg joins (~user@user/gehmehgeh)
07:30:01 oo_miguel joins (~Thunderbi@77.252.47.78)
07:30:31 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
07:32:47 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
07:35:18 merijn joins (~merijn@c-001-001-013.client.esciencecenter.eduvpn.nl)
07:37:31 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 256 seconds)
07:47:34 jmdaemon joins (~jmdaemon@user/jmdaemon)
07:48:15 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:48:58 × freeside_ quits (~mengwong@202.161.55.11) (Ping timeout: 265 seconds)
07:50:12 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
07:52:28 freeside joins (~mengwong@122.11.248.245)
07:54:24 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: leaving)
07:54:28 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
07:55:30 <Inst_> curious about one factor of Haskell
07:55:36 <Inst_> I was translating my O'Neill sieve into Julia
07:55:37 <Inst_> it's bugged
07:55:50 <Inst_> and when I write imperative languages, I tend to overcomment
07:55:58 <Inst_> so much that the Haskell code was 1/3rd the size of the Julia code's size
07:56:06 <Inst_> erm, 1/3rd the size of the Julia code
07:56:21 titibandit joins (~titibandi@user/titibandit)
07:56:26 <Inst_> but the overcommenting in Haskell, it seems that comments in Haskell code seem unnatural
07:56:55 <[exa]> yeah there are no "good" points to attach comments into expressions that fit in 1 line
07:57:39 <jade[m]1> It's better to comment functions and types, rather than expressions
07:57:47 <jade[m]1> because the expressions are by design declarative
07:57:48 <[exa]> in do notation you can go ham with EOL --comments or interline {-comments-} because it kinda fits there, elsewhere it's weird except for docstrings on stuff
07:57:51 <Inst_> i know overcommenting is bad
07:58:01 <Inst_> but it's sort of funny to try to break up the Haskell code for overcommenting
07:58:04 <jackdk> overcommenting is in the eye of the reader
07:58:24 <jackdk> I have some pretty big slab comments in work code where the detailed explanation matters a lot
07:58:25 <Inst_> tbh everything less than overcommenting I think is undercommenting for a newbie or non-Haskeller coming in
07:58:39 <[exa]> also, like, you're free to write the code in a way that requires no commentary
07:58:55 <jackdk> that is the ideal but is sometimes unreachable.
07:59:01 <jade[m]1> [exa]: yep, if possible this is the best solution in my opinion
07:59:35 <Inst_> what cancer have I wrought!
07:59:36 <Inst_> https://media.discordapp.net/attachments/968989726633779215/1105041261104222208/image.png?width=1184&height=1404
07:59:59 <[exa]> ideally the only non-docstring comments are ones for a really tricky stuff ("danger here! you're going to trip over this")
08:00:20 <[exa]> if you need more comments just break the code to allow for more docstring places
08:00:36 <Inst_> but the commenting story IS sort of interesting, i.e, Haskell's terseness makes possible really ridiculous comment : code ratios
08:00:36 <jade[m]1> that is a lot of comments
08:01:01 zeenk joins (~zeenk@2a02:2f04:a105:f00::fba)
08:01:06 <jackdk> my main objection is that it's a screenshot of code rather than a pastebin link
08:01:07 <Inst_> it was posted in the Julia Discord to ask them for help on improving the Julia translation, i.e, it's a variation on O'Neill Sieve
08:01:27 <jackdk> It seems completely defensible to me to write a lot of comments when explaining haskell code to a newcomer
08:01:32 <Inst_> https://paste.tomsmeding.com/ZVIDob9B
08:01:35 <Inst_> oh fine
08:01:39 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:02:06 <jade[m]1> jackdk: oh yeah, for sure
08:02:08 <[exa]> Inst_: actually that's okay, the only problem I see (don't see actually) is the case head completely lost among the comment block
08:02:15 <jade[m]1> it depends on who is intended to read the code
08:02:24 <Inst_> should Haskellers actually overcomment?
08:02:40 <[exa]> there's reddit for that
08:02:45 <jade[m]1> having started to work myself into the GHC codebase, I have to say that I really like the amount of comments and notes
08:02:57 <jade[m]1> they make the code very readable and also very explicit at the same time
08:03:22 <[exa]> Inst_: anyway at this point you might just want to go literate haskell
08:03:44 chele joins (~chele@user/chele)
08:04:01 <Inst_> i know; it's sorely underused
08:04:15 <Inst_> I'm trying to make time to go back to work on my cabal wrapper project, which is going nowhere
08:04:21 <[exa]> as in, the ghc code is kinda literate haskell, except not formatted in lhc :D
08:04:30 <Inst_> maybe putting it up as .lhs might be interesting
08:05:12 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
08:05:41 <[exa]> more generally, most problems with layout and information bumping into each other are best solved by changing the format
08:06:03 <[exa]> so well, yeah. :D
08:13:36 <ski> Inst_ : i think i would try put the comment about (or maybe below) the item it's commenting, rather than put it to the right of the item. that would also mean those comment lines could be longer, and so there'd be fewer comment lines
08:13:53 <Inst_> yeah, sorry, i got used to vertical commenting
08:13:57 <Inst_> erm, horizontal commenting
08:14:02 <ski> (i'd also put `:' just before the code on the next line, instead of at the end of the line before)
08:15:46 <Inst_> the point of horizontal vs vertical is more that, say, with imperative code, you can now be explicit with what each step is doing
08:16:03 <Inst_> whereas, as it's been mentioned before, it's hard to be able to comment directly
08:16:05 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 240 seconds)
08:16:05 <ski> (i would also not use as much indentation for the code itself)
08:16:23 <Inst_> i wonder if you could upgrade haddock for this
08:16:37 <Inst_> or put it into an IDE, i.e, have comments that only exist for the IDE parsing the AST
08:16:42 cfricke joins (~cfricke@user/cfricke)
08:16:58 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-c8bd-37f2-a0dc-5f82.rev.sfr.net)
08:17:22 <ski> you're sometimes using `Sieve' infix, sometimes not
08:17:27 <jade[m]1> I think you can hook into treesitter for stuff like that
08:19:52 <ski> (generally i also don't like using the same name for a data constructor as for a data type)
08:20:03 × zeenk quits (~zeenk@2a02:2f04:a105:f00::fba) (Remote host closed the connection)
08:20:19 × tzh_ quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:20:24 zeenk joins (~zeenk@2a02:2f04:a105:f00::7fe)
08:21:40 <jade[m]1> https://int-index.github.io/posts/haskell-punning :)
08:22:53 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
08:23:18 <ski> instead of `Set.findMin' and `Set.delete', i think you could use `Set.deleteFindMin'
08:23:26 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
08:24:21 × freeside quits (~mengwong@122.11.248.245) (Read error: Connection reset by peer)
08:24:29 freeside joins (~mengwong@122.11.248.245)
08:25:11 <Inst_> i know, MkSieve
08:25:13 <Inst_> idiomatic
08:25:38 <Inst_> https://media.discordapp.net/attachments/968989726633779215/1105047812032434266/image.png?width=1616&height=1404
08:26:15 <Inst_> you know what we really need? Not literate Haskell, but Latex Haskell ;)
08:27:36 <ski> jade[m]1 : yea, i'm (mostly) okay with the former use, but don't like the latter use (have thought of all those points before)
08:29:29 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
08:29:45 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 240 seconds)
08:32:18 <jade[m]1> yep, I agree, especially as we (hopefully) move towards dependent types as described in (dependent haskell)[https://gitlab.haskell.org/ghc/ghc/-/wikis/dependent-haskell] there would be thing like `foo :: foreach a. a -> OtherType` in which `a` is also brought into the term namespace
08:33:10 <jade[m]1> im amazing at markdown as you can see /s
08:33:48 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
08:36:27 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
08:38:05 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
08:42:32 <carbolymer> How do you guys test simple things with hackage libraries? I mean, things like simple json serialization in repl. Do you install a library globally, or do you keep a project with handy dependencies like aeson, or megaparsec somewhere and start repl there?
08:42:42 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Remote host closed the connection)
08:44:11 <kaol> I'm not coming up with the right words for searching for this. What's a String -> String function that would unescape HTML escapes? Like "G&ouml;teborg" to "Göteborg".
08:45:40 <[exa]> kaol: decodeHtmlEntities (that's from xml-conduit, other packages might have similar)
08:45:46 <probie> carbolymer: I have a "project with handy dependencies"
08:46:09 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
08:46:21 <Inst_> https://paste.tomsmeding.com/pqWzI2ib
08:46:24 <Inst_> updated code, thanks for the suggestions
08:46:47 <Inst_> the deleteFindMin reduced the processing time for the 100_000th prime to 20 seconds from 30
08:46:51 <[exa]> Inst_: ascii art >>>>>> anything else
08:46:54 gmg joins (~user@user/gehmehgeh)
08:47:19 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
08:48:13 <Inst_> I guess it's an interesting direction that hasn't been explored, people say there's really three main Haskell communities, the maintenance guys, who love how Haskell makes maintenance and refactoring a breeze
08:48:28 <Inst_> there's the correctness guys, who really want Idris, but lazy, and Haskell's ecosystem
08:48:41 <Inst_> there's the type theory guys, who want to push the boundaries of what's possible with types
08:49:05 <Inst_> there's actually a fourth community, i.e, the simplicity guys, which is where stuff like Elm comes from
08:49:37 <Inst_> we already have declarative GUI via the Elm and JS communities, but FP is declarative data transformation algorithms at its heart
08:50:19 <Inst_> the simplicity guys like Haskell for how simple and clean code can be in Haskell, but they're a small minority and I don't think there's much progress in that direction
08:51:50 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 268 seconds)
08:51:56 × JScript quits (~JScript@144.48.39.39) (Ping timeout: 246 seconds)
08:52:50 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
08:55:29 <jade[m]1> <Inst_> "there's the type theory guys..." <- i love types
08:55:40 <Inst_> sorry for the gendered term
08:56:07 <jade[m]1> is guys gendered?
08:56:15 <jade[m]1> I always saw it as neutral
08:56:58 <jade[m]1> but yeah, types and the boundaries of safety originally drew me towards haskell
08:58:39 freeside joins (~mengwong@103.252.202.85)
09:00:08 × aaronv quits (~aaronv@user/aaronv) (Quit: You have been kicked for being idle)
09:02:04 <ski> Inst_ : <https://paste.tomsmeding.com/Dvr4WtJ0>
09:03:05 × michalz quits (~michalz@185.246.207.221) (Ping timeout: 240 seconds)
09:03:23 michalz joins (~michalz@185.246.207.203)
09:03:31 × merijn quits (~merijn@c-001-001-013.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
09:03:45 <ski> jade[m]1 : it's quite often used (both by weremen and by women) in a non-gendered sense (possibly depending on age, and region .. not too sure)
09:05:41 <ski> jade[m]1 : "thing like `foo :: foreach a. a -> OtherType` in which `a` is also brought into the term namespace" -- i actually quite dislike the `forall' (here `foreach') bringing `a' into scope in the corresponding defining equations .. it's exactly backwards to what i would expect
09:07:36 <jade[m]1> it's outlined here https://gitlab.haskell.org/ghc/ghc/-/wikis/dependent-haskell
09:08:18 <jade[m]1> forall does not bring it into the term namespace whereas foreach does
09:09:07 <jade[m]1> it's really interesting imo
09:09:34 <ski> `forall' does, unfortunately, if you have `ScopedTypeVariables' enabled
09:10:01 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
09:10:16 <ski> % :t let id :: forall a. a -> a; id x = x :: a in id
09:10:16 <yahb2> let id :: forall a. a -> a; id x = x :: a in id :: a -> a
09:10:20 <ski> % :t let id :: a -> a; id x = x :: a in id
09:10:20 <yahb2> <interactive>:1:26: error: ; • Couldn't match expected type ‘a2’ with actual type ‘a1’ ; ‘a2’ is a rigid type variable bound by ; an expression type signature: ; forall ...
09:10:29 <ski> (this is exactly backwards, to me)
09:10:57 tomsmeding prefers 'id :: forall a -> a -> a'
09:11:25 <tomsmeding> % :t let id :: forall a -> a -> a
09:11:25 <yahb2> <no location info>: error: ; not an expression: ‘let id :: forall a -> a -> a’
09:11:29 <tomsmeding> % :t let id :: forall a -> a -> a ; id = _
09:11:29 <yahb2> <no location info>: error: ; not an expression: ‘let id :: forall a -> a -> a ; id = _’
09:11:35 <tomsmeding> % :t let id :: forall a -> a -> a ; id = _ in _
09:11:35 <yahb2> <interactive>:1:11: error: ; • Illegal visible, dependent quantification in the type of a term: ; forall a -> a -> a ; (GHC does not yet support this) ; • In the type signatur...
09:11:49 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-c8bd-37f2-a0dc-5f82.rev.sfr.net) (Remote host closed the connection)
09:11:49 <tomsmeding> the parser even supports it already :p
09:12:29 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:13:03 merijn joins (~merijn@185.143.104.11)
09:13:12 <jade[m]1> ski: but that's still on the type level
09:14:07 <ski> % :t let id (x :: a) :: a = x in id -- i'm also missing this
09:14:07 <yahb2> <interactive>:1:5: error: Parse error in pattern: id
09:14:13 <jade[m]1> term level means you'd be able to write... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/5463f2673567dba9550e7cbb8d4b25a15556128c>)
09:14:22 <ski> % :t let id (x :: a) = x :: a in id -- while this works
09:14:22 <yahb2> let id (x :: a) = x :: a in id -- while this works :: a -> a
09:14:28 <jade[m]1> no, wait
09:14:32 <jade[m]1> I made an oopsie
09:14:39 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 268 seconds)
09:16:33 jade[m]1 sent a code block: https://libera.ems.host/_matrix/media/v3/download/libera.chat/09a270e7d57b3fbb6a90a87d1562886cebdbf4b9
09:17:55 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:18:46 <jade[m]1> A more practical example from there would be... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/9ebc83656373660ce8102694db1466721f13e7c0>)
09:19:59 <ski> % :t let myNot (x :: a) = not x :: a in myNot -- heh, istr SML actually doesn't allow this
09:19:59 <yahb2> let myNot (x :: a) = not x :: a in myNot -- heh, istr SML actually doesn't allow this ; :: Bool -> Bool
09:20:58 <ski> (OCaml seem to allow it, though)
09:21:59 <ski> jade[m]1 : yes. however, i wasn't really talking about type-level versus term-level here, but rather about type signature vs. defining equations
09:22:32 <jade[m]1> mhm
09:23:54 <ski> (and yea, i've seen `foreach' before)
09:25:39 titibandit joins (~titibandi@user/titibandit)
09:27:10 <Inst_> ugh, i can't traverse a set
09:27:50 <Inst_> that's a bit of an annoying limitation, i want to STRef a set to run my algorithm mutably and see what happens if i don't have to keep on copying the data type
09:28:47 <ski> using some mutable version of sets ?
09:28:51 gurkenglas joins (~gurkengla@dynamic-046-114-183-044.46.114.pool.telefonica.de)
09:29:43 <Inst_> hey, snoyman is still updating this!
09:29:44 <Inst_> https://hackage.haskell.org/package/mutable-containers
09:30:41 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
09:32:47 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
09:37:01 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
09:43:08 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
09:43:15 × ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving)
09:44:25 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 240 seconds)
09:47:31 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Ping timeout: 256 seconds)
09:53:41 JScript joins (~JScript@1.132.24.18)
09:53:43 × JScript quits (~JScript@1.132.24.18) (Max SendQ exceeded)
09:56:11 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
10:05:13 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
10:16:18 JScript joins (~JScript@45.248.77.157)
10:16:23 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:17:25 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 240 seconds)
10:18:30 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
10:19:03 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
10:21:17 JScript joins (~JScript@45.248.77.157)
10:21:21 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:23:08 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
10:25:09 __monty__ joins (~toonn@user/toonn)
10:25:48 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
10:26:16 JScript joins (~JScript@45.248.77.157)
10:26:19 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:31:07 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
10:34:57 freeside joins (~mengwong@122.11.212.59)
10:35:28 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 250 seconds)
10:37:58 JScript joins (~JScript@45.248.77.157)
10:38:02 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:38:27 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
10:40:28 JScript joins (~JScript@45.248.77.157)
10:40:32 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:41:02 JScript joins (~JScript@45.248.77.157)
10:41:06 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:44:45 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
10:53:56 JScript joins (~JScript@45.248.77.157)
10:54:03 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
10:57:03 JScript joins (~JScript@45.248.77.157)
10:57:06 × JScript quits (~JScript@45.248.77.157) (Max SendQ exceeded)
11:00:03 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
11:00:23 × Vq quits (~vq@90-227-195-9-no77.tbcn.telia.com) (Read error: Connection reset by peer)
11:03:35 xff0x joins (~xff0x@ai098135.d.east.v6connect.net)
11:04:40 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 260 seconds)
11:05:00 Vq joins (~vq@90-227-195-9-no77.tbcn.telia.com)
11:10:14 JScript joins (~JScript@103.137.12.149)
11:10:21 × JScript quits (~JScript@103.137.12.149) (Max SendQ exceeded)
11:12:08 JScript joins (~JScript@103.137.12.149)
11:12:11 × JScript quits (~JScript@103.137.12.149) (Max SendQ exceeded)
11:12:51 × oo_miguel quits (~Thunderbi@77.252.47.78) (Ping timeout: 256 seconds)
11:17:11 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
11:17:31 nate2 joins (~nate@98.45.169.16)
11:20:45 × freeside quits (~mengwong@122.11.212.59) (Ping timeout: 240 seconds)
11:21:55 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 256 seconds)
11:22:51 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
11:30:15 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
11:34:43 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
11:40:50 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 260 seconds)
11:41:08 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
11:47:37 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
11:47:55 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:48:37 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
11:48:50 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
11:49:28 × vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
11:51:43 jade[m]1 uploaded an image: (23KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/XQKlLEZktPCZiMzsedgiNTLD/image.png >
11:51:43 <jade[m]1> what the heck is this syntax?
11:53:00 <ncf> looks like a clipboard failure on top of a clipboard failure
11:53:46 <dminuoso> Or some bizarre LSP lens bug
11:55:18 <ski> the context looks a bit weird to me, as well
11:56:11 jade[m]1 uploaded an image: (31KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/BmHnnfVRZtRxwailziCMnbvf/image.png >
11:56:12 <jade[m]1> indeed
11:56:18 <jade[m]1> the file seems to be too big for LSP
11:56:26 <jade[m]1> 5194 lines
11:56:37 <dminuoso> What do you mean by "too big"?
11:56:56 <jade[m]1> my lsp seems to have issues with large files
11:57:05 <jade[m]1> at some point it just stops working properly
11:58:15 <ski> what's the line after the last one, in that last, jade[m]1 ?
11:59:05 <dminuoso> For what its worth, Ive seen emacs lsp lenses insert very broken fragments.
11:59:32 <jade[m]1> I don't use lsp lenses
11:59:34 <dminuoso> At times I wish we didnt use raw text for exchanging code with a compiler.
11:59:50 <jade[m]1> `
11:59:51 <jade[m]1> ski: ```... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/ba18be8323281bf3e52f1a7e2b0ebfce319bb81e>)
12:00:50 <ski> ok, at least not starting with `=', then
12:02:35 mmhat joins (~mmh@p200300f1c706687dee086bfffe095315.dip0.t-ipconnect.de)
12:13:01 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:32:57 vulfe_ joins (~vulfe@207.229.148.168)
12:52:05 × juri_ quits (~juri@217.138.194.165) (Ping timeout: 240 seconds)
12:53:36 <jean-paul[m]> I'm having trouble handling all possible IO exceptions. I want to turn them into some kind of Left. I don't mind losing some details if necessary, though it would be nice to at least be able to get a string representation. I've run into Could not decide (Exception e0) and I'm not sure what to do with it. Here's my current attempt - https://gist.github.com/exarkun/b8cf950c584b8b2d9eeba66fe44bc6b0
12:54:06 <merijn> jean-paul[m]: Catch SomeException
12:54:14 juri_ joins (~juri@84-19-175-187.pool.ovpn.com)
12:57:42 <jean-paul[m]> Aha. That works. Thanks. I guess I should try to understand exceptions/SomeException better.
13:01:34 <merijn> jean-paul[m]: The paper mentioned at the top of Control.Exception ("An Extensible Dynamically-Typed Hierarchy of Exceptions") is pretty good
13:01:51 <merijn> jean-paul[m]: It actually lets you do OO style subclassing of exceptions and catching them
13:02:06 <merijn> SomeException being the root exception that catches "everything"
13:02:37 <jean-paul[m]> awesome, thank you
13:11:18 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
13:12:14 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:24:16 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:28:08 × micro quits (~micro@user/micro) (Remote host closed the connection)
13:28:35 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Quit: xff0x)
13:31:07 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
13:33:51 wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
13:34:20 vulfe joins (~vulfe@207.229.148.168)
13:34:24 × vulfe_ quits (~vulfe@207.229.148.168) (Read error: Connection reset by peer)
13:37:39 <yin> i'm using hls on nvim and when performing code actions i notice that the most obvious/useful one is usually the last option on the provived list. is there a logic to this ordering? if so, would there be an easy way to automatically bind a command to choose the last option by default?
13:38:09 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
13:38:09 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
13:38:09 wroathe joins (~wroathe@user/wroathe)
13:39:12 × wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
13:39:26 <yin> oh maybe this is a question for #haskell-langage-server
13:39:31 rf joins (~rf@2605:59c8:179c:f610:3bd2:4ecb:9b16:aa4f)
13:40:13 micro joins (~micro@user/micro)
13:44:00 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds)
13:46:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
13:51:29 freeside joins (~mengwong@103.252.202.85)
13:51:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Ping timeout: 260 seconds)
13:56:16 jero98772 joins (~jero98772@2800:484:1d84:9000::2)
13:56:28 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 268 seconds)
13:58:59 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
14:05:40 × vulfe quits (~vulfe@207.229.148.168) (Remote host closed the connection)
14:06:26 freeside joins (~mengwong@103.252.202.85)
14:10:51 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 260 seconds)
14:12:38 xff0x joins (~xff0x@2405:6580:b080:900:8bd4:f87d:a79b:d165)
14:13:09 vulfe joins (~vulfe@207.229.148.168)
14:19:42 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
14:35:26 shriekingnoise joins (~shrieking@186.137.175.87)
15:06:58 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:2d52:c5aa:cfa9:3177) (Quit: WeeChat 2.8)
15:19:16 nate2 joins (~nate@98.45.169.16)
15:22:02 <Axman6> jean-paul[m]: Parallel and Concurrent Programming in Haskell does a food job explaining how exceptions wor, iirc
15:22:11 <Axman6> @where pcph
15:22:11 <lambdabot> "Parallel and Concurrent Programming in Haskell" by Simon Marlow in 2013 at <http://community.haskell.org/~simonmar/pcph/>,<http://chimera.labs.oreilly.com/books/1230000000929/>,<https://web.archive.
15:22:11 <lambdabot> org/web/20180117194842/http://chimera.labs.oreilly.com/books/1230000000929>,<https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939/>
15:24:15 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
15:26:19 freeside joins (~mengwong@103.252.202.85)
15:27:09 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
15:28:50 × gurkenglas quits (~gurkengla@dynamic-046-114-183-044.46.114.pool.telefonica.de) (Ping timeout: 246 seconds)
15:29:57 Sgeo joins (~Sgeo@user/sgeo)
15:30:58 gurkenglas joins (~gurkengla@dynamic-046-114-179-106.46.114.pool.telefonica.de)
15:31:49 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 256 seconds)
15:34:24 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
15:38:27 emmanuelux joins (~emmanuelu@user/emmanuelux)
15:44:03 hugo joins (znc@verdigris.lysator.liu.se)
15:44:48 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
15:46:29 × mexpr quits (~mexpr@user/mexpr) (Quit: leaving)
15:48:17 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
15:48:32 Inst_ is now known as Inst
15:50:55 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
15:52:28 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Ping timeout: 240 seconds)
15:53:25 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
15:53:59 oo_miguel joins (~Thunderbi@77.252.47.78)
15:54:27 elain4 joins (~textual@static-71-251-226-194.rcmdva.fios.verizon.net)
15:55:55 nick4 joins (~nick@wsip-174-78-110-18.pn.at.cox.net)
16:05:03 Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi)
16:08:19 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
16:12:46 titibandit joins (~titibandi@user/titibandit)
16:18:05 × merijn quits (~merijn@185.143.104.11) (Ping timeout: 240 seconds)
16:20:17 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
16:26:22 freeside joins (~mengwong@103.252.202.85)
16:29:06 × talismanick quits (~user@2601:204:ef80:6c80::a8e2) (Remote host closed the connection)
16:31:00 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 265 seconds)
16:33:53 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:39:11 × vulfe quits (~vulfe@207.229.148.168) (Remote host closed the connection)
16:40:58 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:42:44 freeside joins (~mengwong@103.252.202.85)
16:43:47 × jjb quits (~jjb@user/jjb) (Ping timeout: 256 seconds)
16:44:59 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8)
16:47:07 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 248 seconds)
16:52:04 cheater_ joins (~Username@user/cheater)
16:54:05 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
16:54:57 cheater__ joins (~Username@user/cheater)
16:54:57 cheater__ is now known as cheater
16:58:05 × cheater_ quits (~Username@user/cheater) (Ping timeout: 246 seconds)
17:03:56 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
17:08:45 chomwitt joins (~chomwitt@2a02:587:7a1f:b500:f431:9979:9130:4486)
17:15:54 learner-monad joins (~ehanneken@user/learner-monad)
17:19:21 roboguy_ joins (~roboguy_@cpe-69-76-235-109.kc.res.rr.com)
17:20:31 vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
17:20:43 × titibandit quits (~titibandi@user/titibandit) (Ping timeout: 248 seconds)
17:22:15 t0ngub1n_mobile joins (~t0ngub1n_@95-24-68-157.broadband.corbina.ru)
17:23:53 × czy quits (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
17:42:10 × michalz quits (~michalz@185.246.207.203) (Ping timeout: 268 seconds)
17:43:14 michalz joins (~michalz@185.246.207.203)
17:47:12 × cheater quits (~Username@user/cheater) (Read error: Connection reset by peer)
17:47:20 titibandit joins (~titibandi@user/titibandit)
17:47:49 cheater joins (~Username@user/cheater)
17:58:29 mud joins (~mud@user/kadoban)
18:02:16 ubert joins (~Thunderbi@p548c9371.dip0.t-ipconnect.de)
18:09:07 × jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 265 seconds)
18:12:35 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:17:18 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
18:17:41 gensyst joins (~gensyst@user/gensyst)
18:18:13 <gensyst> Do performMajorGC and performMinorGC wait until they complete before continuing?
18:18:25 <gensyst> i.e. does GC completely finish
18:18:31 <gensyst> or do they run "async" in the background?
18:18:35 × titibandit quits (~titibandi@user/titibandit) (Ping timeout: 246 seconds)
18:19:49 rlj joins (~rlj@194-218-34-180.customer.telia.com)
18:20:32 jero98772 joins (~jero98772@2800:484:1d84:9000::2)
18:26:15 <geekosaur> pretty sure they have to complete because the next action would probably allocate memory and block on the GC anyway
18:26:45 <geekosaur> s/action/computation
18:27:37 <geekosaur> and the main reason to invoke either of those is to free up nursery / heap space for that next computation
18:28:04 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
18:29:08 czy joins (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net)
18:31:33 n0nesense joins (~n0nesense@2001:470:69fc:105::3:5697)
18:33:03 img joins (~img@user/img)
18:34:06 <gensyst> geekosaur, thanks
18:38:36 freeside joins (~mengwong@103.252.202.85)
18:40:14 ft joins (~ft@p4fc2a88b.dip0.t-ipconnect.de)
18:42:12 × czy quits (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
18:43:12 jay-invariant joins (~jay@066-189-100-190.res.spectrum.com)
18:43:23 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 264 seconds)
18:46:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Remote host closed the connection)
18:53:42 gmg joins (~user@user/gehmehgeh)
18:54:41 × gensyst quits (~gensyst@user/gensyst) (Quit: Leaving)
18:58:38 × nick4 quits (~nick@wsip-174-78-110-18.pn.at.cox.net) (Ping timeout: 268 seconds)
18:59:03 × iteratee_ quits (~kyle@162.218.222.207) (Read error: Connection reset by peer)
18:59:18 iteratee joins (~kyle@162.218.222.207)
19:04:02 freeside joins (~mengwong@103.252.202.85)
19:07:09 titibandit joins (~titibandi@user/titibandit)
19:08:16 × t0ngub1n_mobile quits (~t0ngub1n_@95-24-68-157.broadband.corbina.ru) (Quit: Quit)
19:08:17 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 256 seconds)
19:12:26 × n0nesense quits (~n0nesense@2001:470:69fc:105::3:5697) (Quit: issued !quit command)
19:19:03 × jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 256 seconds)
19:20:45 nate2 joins (~nate@98.45.169.16)
19:25:51 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
19:26:05 × jay-invariant quits (~jay@066-189-100-190.res.spectrum.com) (Remote host closed the connection)
19:27:21 jay-invariant joins (~jay@066-189-100-190.res.spectrum.com)
19:29:06 czy joins (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net)
19:30:24 jero98772 joins (~jero98772@2800:484:1d84:9000::2)
19:33:47 × chomwitt quits (~chomwitt@2a02:587:7a1f:b500:f431:9979:9130:4486) (Ping timeout: 256 seconds)
19:35:36 × jay-invariant quits (~jay@066-189-100-190.res.spectrum.com) (Remote host closed the connection)
19:36:15 jay-invariant joins (~jay@066-189-100-190.res.spectrum.com)
19:36:53 × roboguy_ quits (~roboguy_@cpe-69-76-235-109.kc.res.rr.com) (Remote host closed the connection)
19:37:31 roboguy_ joins (~roboguy_@cpe-69-76-235-109.kc.res.rr.com)
19:37:38 × roboguy_ quits (~roboguy_@cpe-69-76-235-109.kc.res.rr.com) (Remote host closed the connection)
19:37:50 roboguy_ joins (~roboguy_@cpe-69-76-235-109.kc.res.rr.com)
19:38:05 × czy quits (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
19:43:31 czy joins (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net)
19:45:15 × jay-invariant quits (~jay@066-189-100-190.res.spectrum.com) (Remote host closed the connection)
19:45:48 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 240 seconds)
19:46:47 jay-invariant joins (~jay@066-189-100-190.res.spectrum.com)
19:47:26 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24)
19:47:58 mjrosenb joins (7U2UjFMg@WHELK.CLUB.CC.CMU.EDU)
19:50:48 cyphase joins (~cyphase@user/cyphase)
19:52:00 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:cc86:9d0c:407:3c24) (Ping timeout: 260 seconds)
19:55:30 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
19:55:58 <drlkf_> how do you properly implement an 'Enum' and 'Bounded' type such that '[minBound..]' does not call 'succ' on a 'maxBound' value ?
19:56:36 <geekosaur> > [minBound..] :: [Bool]
19:56:37 <lambdabot> [False,True]
19:56:58 <geekosaur> if you derive both Enum and Bounded then that should just work
19:56:58 <mauke> @undo [minBound..]
19:56:58 <lambdabot> [minBound ..]
19:57:18 <drlkf_> that's easy when deriving 'Enum' and 'Bounded', but i can't figure out how to do it with custom implementations even when my 'Enum' and 'Bounded' instances are correct
19:57:30 <geekosaur> you could use -ddump-deriv to see how ghc does it
19:57:42 <drlkf_> good idea, ill try that
19:58:08 <geekosaur> I don't know if there's a specified way to do it, just a specification that it should work
19:58:51 <jade[m]1> I would assume they just override enumFrom and friends
19:59:01 <mauke> yeah
19:59:09 <mauke> enumFrom is a method of Enum
19:59:14 <drlkf_> i've been struggling with a data type that has correct 'Enum' and 'Bounded' and somehow '[minBound ..]' produces a runtime error while '[minBound .. maxBound]' works fine
19:59:16 <jade[m]1> and the custom implementation can make sure that it "does it right"
19:59:49 <geekosaur> does the Enum instance know about the Bounded instance? it's supposed to if it exists
20:00:07 <drlkf_> how do i know ?
20:00:25 <drlkf_> they are defined sequentially in the same file so i assume it does
20:00:47 <jade[m]1> does it error if you use minBound :: YourType in the instance?
20:00:56 <mauke> what does your enumFrom look like?
20:01:37 <geekosaur> actually the Report does specify. see https://paste.tomsmeding.com/ihUKBJiV
20:02:01 <geekosaur> it gives a sample Enum specification for a type which has both Enum and Bounded
20:02:56 <geekosaur> cf. 6.3.4 of the Report
20:05:48 <drlkf_> ah, i see. i have only defined 'toEnum' and 'fromEnum' since it was minimal required definition, but '[minBound ..]' relies on 'enumFrom', correct?
20:06:01 n0nesense86 joins (~n0nesense@91.98.210.222)
20:06:08 <geekosaur> it is enumFrom
20:06:25 × n0nesense86 quits (~n0nesense@91.98.210.222) (Client Quit)
20:06:30 <drlkf_> that explains everything. thanks
20:06:38 <jade[m]1> s u g a r
20:06:41 <geekosaur> the .. forms are syntax sugar
20:06:51 <jade[m]1> system of a down starts playing
20:06:59 <mauke> sugr?
20:07:15 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net)
20:08:12 n0nesense86 joins (~n0nesense@91.98.210.222)
20:08:34 × n0nesense86 quits (~n0nesense@91.98.210.222) (Client Quit)
20:09:25 freeside joins (~mengwong@103.252.202.85)
20:10:11 × rlj quits (~rlj@194-218-34-180.customer.telia.com) (Quit: Client closed)
20:11:18 n0nesense11 joins (~n0nesense@91.98.210.222)
20:12:35 n0nesense11 is now known as Alphred
20:13:04 × Alphred quits (~n0nesense@91.98.210.222) (Client Quit)
20:13:52 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 248 seconds)
20:15:45 n0nesense75 joins (~n0nesense@91.98.210.222)
20:15:54 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net) (Remote host closed the connection)
20:16:11 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net)
20:16:16 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net) (Remote host closed the connection)
20:16:52 nick4 joins (~nick@2600:8807:9103:b700:d8e6:a031:6c5c:b040)
20:16:59 × n0nesense75 quits (~n0nesense@91.98.210.222) (Client Quit)
20:17:13 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net)
20:18:13 <ncf> i just realised that Reader r is the centre of State r
20:18:59 <Rembane> How?
20:19:05 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net) (Remote host closed the connection)
20:19:07 <geekosaur> yes. and I'm not the only one who wishes State had an equivalent of `local`…
20:19:50 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net)
20:20:18 <ncf> Reader r a consists of the elements m of State r a that commute with all other n : State r a, in the sense that (do x ← n; y ← m; f x y) == (do y ← m; x ← n; f x y)
20:20:55 <Rembane> That's cool! Thank you!
20:21:13 <ncf> which looks like the definition of the centre of a group/monoid/whatever, and is in fact exactly the definition of the centre of a monad as found in https://arxiv.org/pdf/2207.09190.pdf
20:21:20 × nick4 quits (~nick@2600:8807:9103:b700:d8e6:a031:6c5c:b040) (Ping timeout: 248 seconds)
20:21:35 <ncf> (well, "exactly" modulo translation of Set nonsense into Hask nonsense)
20:25:04 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:27:18 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-7566-04fc-ae15-ab7d.rev.sfr.net) (Ping timeout: 245 seconds)
20:29:19 × jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 256 seconds)
20:34:57 freeside joins (~mengwong@103.252.202.85)
20:37:15 goodtimeswithtom joins (~goodtimes@2600:1700:4010:6d20:6ced:4b7c:e16e:c74c)
20:38:46 × goodtimeswithtom quits (~goodtimes@2600:1700:4010:6d20:6ced:4b7c:e16e:c74c) (Client Quit)
20:39:08 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 240 seconds)
20:39:09 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
20:40:28 jero98772 joins (~jero98772@2800:484:1d84:9000::2)
20:41:18 tomtestingacct joins (~tom@104-191-145-180.lightspeed.dybhfl.sbcglobal.net)
20:45:31 Sciencentistguy0 joins (~sciencent@hacksoc/ordinary-member)
20:48:01 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 256 seconds)
20:48:02 Sciencentistguy0 is now known as Sciencentistguy
20:49:38 × ubert quits (~Thunderbi@p548c9371.dip0.t-ipconnect.de) (Quit: ubert)
20:52:49 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:54:16 × tomtestingacct quits (~tom@104-191-145-180.lightspeed.dybhfl.sbcglobal.net) (Quit: Lost terminal)
20:55:42 stevenxl joins (uid133530@id-133530.uxbridge.irccloud.com)
20:58:05 taupiqueur joins (~taupiqueu@2a02-842a-8180-4601-659e-5ae7-d859-4995.rev.sfr.net)
21:00:22 tanyastopguy joins (~username@2600:1700:4010:6d20:3aea:f984:552:57de)
21:05:16 goodtimeswithtom joins (~goodtimes@2600:1700:4010:6d20:3aea:f984:552:57de)
21:05:26 × jay-invariant quits (~jay@066-189-100-190.res.spectrum.com) (Quit: Leaving)
21:05:35 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection)
21:05:51 × goodtimeswithtom quits (~goodtimes@2600:1700:4010:6d20:3aea:f984:552:57de) (Client Quit)
21:06:21 × taupiqueur quits (~taupiqueu@2a02-842a-8180-4601-659e-5ae7-d859-4995.rev.sfr.net) (Quit: WeeChat 3.8)
21:09:37 × byte quits (~byte@user/byte) (Read error: Connection reset by peer)
21:12:20 byte joins (~byte@user/byte)
21:12:45 Feuermagier_ joins (~Feuermagi@user/feuermagier)
21:13:59 chomwitt joins (~chomwitt@2a02:587:7a14:af00:9080:176a:ae9d:81cc)
21:14:27 × Feuermagier_ quits (~Feuermagi@user/feuermagier) (Client Quit)
21:15:13 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 256 seconds)
21:16:21 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
21:20:38 taupiqueur joins (~taupiqueu@2a02-842a-8180-4601-18c4-e25f-ca07-3bb1.rev.sfr.net)
21:24:26 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-18c4-e25f-ca07-3bb1.rev.sfr.net)
21:30:44 × trev quits (~trev@user/trev) (Quit: trev)
21:31:07 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:718d:894b:b41:1ab9)
21:35:37 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:718d:894b:b41:1ab9) (Ping timeout: 256 seconds)
21:39:15 × jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 256 seconds)
21:48:08 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:50:20 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
21:50:33 jero98772 joins (~jero98772@2800:484:1d84:9000::2)
22:00:51 × chomwitt quits (~chomwitt@2a02:587:7a14:af00:9080:176a:ae9d:81cc) (Remote host closed the connection)
22:04:59 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 265 seconds)
22:07:50 <Inst> axman6: I'm begging another professional Haskeller for tutorials on laziness (I know about thunks, I know about some standard lazy coding patterns, I've skimmed through parts of Parallel and Concurrent Programming in Haskell)
22:08:24 <Inst> tbh, I think long-term, making Haskell's laziness desirable (i.e, FP is popping its head everywhere, laziness a la Haskell, not so much) and a selling feature would at least be interesting
22:09:03 × oo_miguel quits (~Thunderbi@77.252.47.78) (Ping timeout: 256 seconds)
22:13:01 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:13:47 freeside joins (~mengwong@103.252.202.85)
22:16:51 × elain4 quits (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:17:25 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
22:18:26 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 268 seconds)
22:18:35 jargon joins (~jargon@184.101.78.160)
22:26:53 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:30:42 <roboguy_> Inst: What sort of topics would you want it to cover?
22:33:52 <Inst> it basically comes down to an understanding of GHC's unstable evaluation model beyond the stuff Bird covered (lazy is outside in, eager / strict is inside out), how sharing creates space leaks, how to exploit laziness for fun and profit
22:34:21 <Inst> might actually be better to cover the topics in reverse, because everyone who needs to know the information needs to get all the way to "how not to space leak yourself to death"
22:34:42 <Inst> I'm hoping HLS will eventually come with a space leak warning overlay, tbh
22:35:23 <ncf> (i think i told a lie: elements of Reader r a commute with all other elements of Reader r a, not generally with State r a. it seems like Reader r is the "largest commutative submonad" of State r, but i don't think you get it from the centre construction, which is weird)
22:36:21 <vulfe> I feel like that also has a name but I can't summon it to mind
22:37:12 <c_wraith> Inst: the single most important topic is "why -XStrict is not the answer to the question you have"
22:37:21 <c_wraith> Need to get people out of that cargo cult
22:39:17 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
22:42:06 <geekosaur> sadly I think you'll have to convince SPJ first, since he's on record as considering lazy-by-default a mistake
22:46:43 <Inst> c_wraith: the way I understand it, -XStrict is equivalent to admitting you suck
22:47:04 <Inst> I suck, and I don't even use -XStrict
22:47:37 <c_wraith> There are very specific cases where it's a great time-saver.
22:47:49 <geekosaur> it's the bad parts of OCaml minus the good parts
22:49:04 × jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 248 seconds)
22:49:36 <Inst> geekosaur: that's a subjective interpretation of his comments
22:49:44 <Inst> Haskell is, I think, the only major lazy-by-default language?
22:50:03 <Inst> it's more, "the market for laziness related research and production is tapped"
23:02:14 jero98772 joins (~jero98772@2800:484:1d84:9000::2)
23:03:27 <jackdk> ISTM that if you really want the code reuse and the purity, you have to have laziness. See https://www.reddit.com/r/haskell/comments/l98v73/can_you_share_a_realworld_anecdote_of_when/glgun65/ and https://www.reddit.com/r/haskell/comments/5xge0v/today_i_used_laziness_for/
23:04:31 taupiqueur1 joins (~taupiqueu@2a02-842a-8180-4601-64af-550d-b7f1-261b.rev.sfr.net)
23:05:09 × mmhat quits (~mmh@p200300f1c706687dee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
23:05:31 mmhat joins (~mmh@p200300f1c706684eee086bfffe095315.dip0.t-ipconnect.de)
23:06:08 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
23:06:25 × gurkenglas quits (~gurkengla@dynamic-046-114-179-106.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
23:06:28 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-18c4-e25f-ca07-3bb1.rev.sfr.net) (Ping timeout: 245 seconds)
23:06:51 × taupiqueur quits (~taupiqueu@2a02-842a-8180-4601-18c4-e25f-ca07-3bb1.rev.sfr.net) (Ping timeout: 256 seconds)
23:06:58 emmanuelux_ joins (~emmanuelu@user/emmanuelux)
23:08:04 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
23:08:17 waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
23:08:44 <geekosaur> https://news.ycombinator.com/item?id=23454642 which claims among other things that purity is actually independent of laziness
23:08:59 <geekosaur> although laziness is what revealed it
23:12:32 <int-e> Didn't SPJ say "laziness kept us pure"?
23:13:53 <geekosaur> that one implies the opposite direction, that laziness requires purity
23:14:05 Guest|20 joins (~Guest|20@192.228.163.95)
23:14:14 <int-e> In any case we've learned a lot from lazy by default.
23:14:45 <int-e> geekosaur: It pretty much does, because reasoning about effects when evaluation order is unpredictable is very hard.
23:15:17 <geekosaur> and in any case my point is there's a lot of people who believe what I said earlier, which is making laziness a hard sell
23:15:23 <int-e> Sure, we still have unsafePerformIO and ST and the state# token trick
23:17:18 <int-e> well, it's not independent if one of the 4 possible combinations (pure,strict), (impure, strict), (pure, lazy), (impure, lazy) is too wild for programming.
23:17:46 × xff0x quits (~xff0x@2405:6580:b080:900:8bd4:f87d:a79b:d165) (Quit: xff0x)
23:19:22 <int-e> (while the other three all make sense)
23:20:51 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
23:20:51 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
23:21:01 × acidjnk quits (~acidjnk@p200300d6e7072f29d032399e5afc9b1f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
23:21:05 chexum joins (~quassel@gateway/tor-sasl/chexum)
23:21:21 azimut joins (~azimut@gateway/tor-sasl/azimut)
23:22:17 nate2 joins (~nate@98.45.169.16)
23:23:02 xff0x joins (~xff0x@2405:6580:b080:900:7ba2:121c:2a4c:a692)
23:27:15 × nate2 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
23:29:15 mauke_ joins (~mauke@user/mauke)
23:31:12 × mauke quits (~mauke@user/mauke) (Ping timeout: 268 seconds)
23:31:12 mauke_ is now known as mauke
23:31:33 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
23:40:27 × Guest|20 quits (~Guest|20@192.228.163.95) (Ping timeout: 268 seconds)
23:51:11 phma joins (phma@2001:5b0:210b:ef98:fc16:fb7:1e9c:8673)
23:57:50 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:57:50 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:57:50 wroathe joins (~wroathe@user/wroathe)

All times are in UTC on 2023-05-08.