Home liberachat/#haskell: Logs Calendar

Logs on 2021-11-22 (liberachat/#haskell)

00:00:59 alx741 joins (~alx741@186.178.108.219)
00:01:09 × pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
00:01:36 lavaman joins (~lavaman@98.38.249.169)
00:01:55 × mmhat quits (~mmh@55d438c0.access.ecotel.net) (Quit: WeeChat 3.3)
00:02:24 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection)
00:04:19 Topsi1 joins (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de)
00:04:25 <dibblego> or waargonaut, but it's not aeson
00:04:31 <dibblego> also, g'day seanparsons
00:04:39 retroid_ joins (~retro@97e2ba2e.skybroadband.com)
00:05:07 × retro_ quits (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
00:05:19 Topsi2 joins (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de)
00:05:34 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
00:06:02 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
00:07:58 × Topsi quits (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
00:08:54 × Topsi1 quits (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
00:10:34 <Axman6> lens-aeson plus the uniplate stuff in the lens library lets you do some super powerful stuff with aeson Values - need to find all the URLs in strings anywhere? Bam, it's like 100 characters to do that
00:13:35 × jinsun quits (~quassel@user/jinsun) (Ping timeout: 250 seconds)
00:19:46 jakalx joins (~jakalx@base.jakalx.net)
00:24:02 × jess quits (~jess@libera/staff/jess) ()
00:25:35 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
00:26:42 × tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Quit: Leaving)
00:32:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:34:08 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
00:34:27 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:35:01 sub0 joins (~bc8165b6@217.29.117.252)
00:37:09 <sub0> hi. what is the equivalent of this in haskell? TYPE *p = malloc(sizeof *p); cfunc(p);
00:38:03 <sub0> closest I could get is this, but what if it was a pointer to a type where I can't or don't want to specify some dummy value: withArray [1] $ \p -> cfunc( p)
00:41:04 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
00:41:19 <geekosaur> @index alloca
00:41:19 <lambdabot> Foreign.Marshal.Alloc, Foreign.Marshal, Foreign, Foreign.Safe, Foreign.Marshal.Safe
00:42:07 pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
00:42:20 <geekosaur> there is also malloc but you'll really want to free it in a related value's finalizer
00:45:38 <sub0> thanks, works nicely
00:47:51 <sub0> alloca $ \p -> do cfunc p; peek p
00:48:17 mimmy_ joins (~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a)
00:52:10 <jle`> any guide on how to migrate template haskell to the ghc 9.0 version that uses 'Code' for typed quotations?
00:53:14 × mimmy_ quits (~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a) (Ping timeout: 268 seconds)
00:53:58 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Quit: Leaving)
00:54:58 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
00:55:18 <jle`> oh i just needed to add a newtype wrapper in a careful place
00:58:50 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
00:59:08 × jmorris quits (uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
00:59:31 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
01:02:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0)
01:07:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
01:07:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Ping timeout: 260 seconds)
01:10:17 <Axman6> Be wery wery careful, we're huntin' newtypes
01:11:25 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:35 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0)
01:15:53 helby parts (helby@alpine/moderator/helby) ()
01:17:32 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:19:01 mvk joins (~mvk@2607:fea8:5cc1:fa00::4702)
01:26:57 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
01:27:16 Feuermagier joins (~Feuermagi@user/feuermagier)
01:28:00 × cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds)
01:29:57 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
01:31:21 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection)
01:31:39 cjb joins (~cjb@user/cjb)
01:37:20 × DNH quits (~DNH@2a02:8108:1100:16d8:14a5:84da:2caa:2854) (Quit: Textual IRC Client: www.textualapp.com)
01:38:27 × burnsidesLlama quits (~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
01:39:17 × pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
01:41:59 mimmy_ joins (~mimmy@2607:fea8:6e0:7f90:d9be:afe3:4e5b:d63)
01:47:19 pfurla joins (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a)
01:56:42 mimmy joins (~mimmy@2607:fea8:6e0:7f90:9c35:bed7:e2c:e900)
01:56:45 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
01:56:53 × mimmy quits (~mimmy@2607:fea8:6e0:7f90:9c35:bed7:e2c:e900) (Client Quit)
01:58:13 × mimmy_ quits (~mimmy@2607:fea8:6e0:7f90:d9be:afe3:4e5b:d63) (Ping timeout: 250 seconds)
02:00:59 stiell joins (~stiell@gateway/tor-sasl/stiell)
02:06:18 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0)
02:08:27 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
02:16:39 jmorris joins (uid433911@id-433911.hampstead.irccloud.com)
02:20:56 <Axman6> @hoogle Lens s t a b -> (a -> m b) -> s -> m t
02:20:57 <lambdabot> No results found
02:22:37 tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
02:23:34 <Axman6> there's definitely a lensy thing for that right?
02:24:19 <awpr> > _1 print (2, 4)
02:24:20 <lambdabot> <IO ((),Integer)>
02:24:39 <awpr> the lens is already that result type to begin with (for any Functor m)
02:25:01 <awpr> there might be a function `traverseOf` for that, but it's just `id`
02:28:37 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
02:31:43 geekosaur joins (~geekosaur@xmonad/geekosaur)
02:31:43 <Boarders_> do any of you know in brick how I can add a background colour behind each of the widgets (not changing any of the widget colours?
02:31:58 <Boarders_> it seems like the drawApp thing should allow me to do it with layering but I can't figure it out
02:33:09 <Boarders_> e.g. in this snake example: https://samtay.github.io/posts/introduction-to-brick how would one render the area outside of the boxes as another colour?
02:34:03 jackhill is now known as KM4MBG
02:34:33 ceedon joins (~ceedon@h224.77.91.75.dynamic.ip.windstream.net)
02:37:08 <sm> Boarders_: do something with the outermost/largest widget
02:37:45 <sm> there is a `margin` function that puts a margin of a certain colour
02:38:15 <sm> I guess you want it over the full screen, showing through transparent foreground widgets ?
02:38:45 <Boarders_> yes, exactly that last thing
02:39:21 <Boarders_> by outermost/largest, do you mean the last widget returned in appDraw?
02:41:11 <Boarders_> ah no, I think that is something to do with buffering
02:42:11 <sm> Boarders_: I don't see anything about transparency in brick or vty, unfortunately
02:42:39 × ceedon quits (~ceedon@h224.77.91.75.dynamic.ip.windstream.net) (Ping timeout: 256 seconds)
02:42:57 <sm> it might be in brick's issue tracker. If not I guess you have to implement it yourself (make a custom widget that combines your layers)
02:43:35 × xff0x quits (~xff0x@2001:1a81:526f:1d00:d375:c485:c62f:a6f6) (Ping timeout: 264 seconds)
02:43:42 <Boarders_> with the last option, do you make the widget and then just give it an attribute with the relevant background colour?
02:43:47 <sm> ansi-terminal-game is a brick-like thing where transparency is easy, just FYI
02:44:22 <Boarders_> thanks, I'll give that a look
02:44:42 <sm> Boarders_: a widget that fills the window and within itself implements the painter's algorithm or something
02:45:04 xff0x joins (~xff0x@2001:1a81:52ae:a700:ef5b:bdbe:c8a4:8fd2)
02:45:04 <sm> but I would ask jtdaugherty in the tracker, he is very responsive
02:45:55 <sm> here's some discussion: https://github.com/jtdaugherty/brick/issues/74
02:47:25 <sm> seems like you could make transparent edges (padding), but maybe holes are harder
02:52:49 × renzhi quits (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 250 seconds)
02:55:52 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
02:56:35 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
03:01:32 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
03:01:34 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
03:03:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:04:40 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
03:08:02 <jackdk> I have a function where I'm accumulating a result backwards, then reversing it at the end (like lisp `PUSH`/`NREVERSE` idiom, I guess). Does this have a common name or combinator somewhere?
03:11:12 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
03:11:17 <EvanR> no because if taken to extremes it can be pretty inefficient
03:11:29 <EvanR> if you can, try to accumulate results forwards
03:11:42 <EvanR> lazily
03:12:08 × shailangsa quits (~shailangs@host86-186-133-114.range86-186.btcentralplus.com) (Remote host closed the connection)
03:15:45 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
03:18:14 × pfurla quits (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…)
03:21:31 pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
03:21:34 × pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Client Quit)
03:25:16 KM4MBG is now known as jackhill
03:30:24 <dsal> Can someone make Num smaller for the next ghc release?
03:30:40 <dsal> I'm not quite sure how to think about things like `negate` on types that be negative.
03:30:43 <jackdk> thanks EvanR . it turned out my problem was compactly expressed as a Data.List.unfold anyway
03:31:03 <EvanR> cool
03:31:46 <dsal> Related: ghci line editing is severely mangled on my machine. Does this sound like a known issue?
03:31:58 <dsal> 8.10.7 on M1
03:32:08 mbuf joins (~Shakthi@223.178.114.167)
03:32:59 <dsal> > negate (5 :: Word)
03:33:01 <lambdabot> 18446744073709551611
03:33:06 <dsal> I guess I can do something like that.
03:33:22 <EvanR> > negate (5 :: Natural)
03:33:23 <lambdabot> error:
03:33:23 <lambdabot> Not in scope: type constructor or class ‘Natural’
03:33:54 <EvanR> > negate (5 :: Numeric.Natural)
03:33:55 <lambdabot> error:
03:33:55 <lambdabot> Not in scope: type constructor or class ‘Numeric.Natural’
03:34:16 <dsal> That's the other option.
03:34:21 <EvanR> I guess Natural was voted off the island
03:34:23 <dsal> I don't really like either.
03:34:52 <dsal> I'm using Data.Fixed, so I can at least do something reasonable.
03:35:29 <dsal> Er, Data.Finite
03:36:01 <dsal> λ> negate (5 :: Finite 11)
03:36:01 <dsal> finite 6
03:36:16 <dsal> I guess since it already does it for me, I can just generalizednewtypederiving it and call it a day.
03:37:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
03:38:17 <dsal> Oh, well, fromInteger is partial. I didn't expect that.
03:41:04 <awpr> there's not really a good Num instance for the finite sets. modular arithmetic is okay enough, but in the not-uncommon case where people do arithmetic assuming it won't be out-of-range, having it silently wrap can hide bugs, and it's extra unintuitive for `fromInteger`
03:42:00 <awpr> do you want Num for anything other than supporting integral literals?
03:43:05 <dsal> Heh, not *really*. Maybe some addition or something.
03:43:12 <dsal> I'm representing relative time as the number of minutes since midnight.
03:43:28 <dsal> Yeah, addition might be nice, and them modulo is the right thing to do.
03:43:56 <awpr> hmm, maybe. seems like you'd want modular addition with an overflow flag
03:44:14 <awpr> like you'd have in adding digits of a positional number system
03:44:29 <dsal> This is the kind of thing that's not likely to be used incorrectly, but I decided not to make it super difficult to use for the normal case where someone wants to just stick a number in a piece of code.
03:46:14 <awpr> yeah, my thinking is that literals should be separate from the other parts of `Num`, and along with some extra features for validating literal values, that's `dependent-literals-plugin`
03:46:30 <awpr> it was actually created specifically to deal with the problem of literals for `Fin`s
03:48:04 zhengcong joins (~zhengcong@113.140.11.120)
03:49:36 <dsal> Yeah, I'd like to have just the representation thing, then maybe have + and * and abs/negate and - and stuff be all separate.
03:50:02 <dsal> It's a small change, should be able to get in shortly.
03:50:06 × td_ quits (~td@muedsl-82-207-238-154.citykom.de) (Ping timeout: 260 seconds)
03:51:22 Codaraxis_ joins (~Codaraxis@user/codaraxis)
03:51:51 <awpr> lol that's why I went for a syntax plugin. very little chance for Num to grow a superclass or literals to move to another function, at least without some new typeclass features like implicit superclass impls
03:51:58 td_ joins (~td@94.134.91.148)
03:52:09 <awpr> but just rewriting literals to my own typeclass method is easy
03:53:11 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Remote host closed the connection)
03:53:36 <dsal> For my use case, ~nobody's going to use this code and if I ever do, I'm just going to do a num literal probably. Or conversion from int that *should* fit.
03:53:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
03:54:39 <awpr> yeah, fair enough. it was only worth it to me because there were Fin literals all over the place, and if literals or arithmetic was out of range, there was no stack trace
03:55:11 × Codaraxis__ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
03:55:47 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:00:43 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
04:04:27 × nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3)
04:05:02 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
04:07:47 × lechner quits (~lechner@debian/lechner) (Ping timeout: 250 seconds)
04:12:06 × nautical quits (~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3)
04:19:33 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds)
04:21:25 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
04:29:57 jinsun joins (~quassel@user/jinsun)
04:32:43 × drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 250 seconds)
04:33:54 × waleee quits (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
04:35:04 lavaman joins (~lavaman@98.38.249.169)
04:40:05 drdo joins (~drdo@roach0.drdo.eu)
04:45:25 deadmarshal joins (~deadmarsh@95.38.230.45)
04:58:05 × monochrom quits (~trebla@216.138.220.146) (Ping timeout: 256 seconds)
05:00:33 alzgh joins (~alzgh@user/alzgh)
05:00:50 monochrom joins (~trebla@216.138.220.146)
05:02:37 × raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
05:07:59 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
05:09:25 × drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 256 seconds)
05:15:06 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:19:02 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
05:21:20 drdo joins (~drdo@roach0.drdo.eu)
05:22:21 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
05:27:56 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
05:28:23 Topsi joins (~Tobias@dyndsl-095-033-023-020.ewe-ip-backbone.de)
05:29:58 × Topsi2 quits (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
05:31:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
05:31:36 lavaman joins (~lavaman@98.38.249.169)
05:31:42 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
05:32:05 × drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 250 seconds)
05:33:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:37:54 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds)
05:38:37 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
05:44:18 sagax joins (~sagax_nb@user/sagax)
05:47:20 Sgeo_ joins (~Sgeo@user/sgeo)
05:47:53 × sub0 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
05:48:48 × qwedfg_ quits (~qwedfg@user/qwedfg) (*.net *.split)
05:48:48 × mcfrdy quits (~mcfrdy@user/mcfrdy) (*.net *.split)
05:48:48 × dexterfoo quits (dexter@2a01:7e00::f03c:91ff:fe86:59ec) (*.net *.split)
05:48:48 × feliix42 quits (~felix@gibbs.uberspace.de) (*.net *.split)
05:48:48 × siers69 quits (~ij@user/ij) (*.net *.split)
05:48:48 × bens quits (~bens@www.typius.com) (*.net *.split)
05:48:48 × xstill- quits (xstill@fimu/xstill) (*.net *.split)
05:48:48 × matijja quits (~matijja@193.77.181.201) (*.net *.split)
05:48:48 × megaTherion quits (~therion@unix.io) (*.net *.split)
05:48:48 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
05:49:01 feliix42 joins (~felix@gibbs.uberspace.de)
05:49:01 bens joins (~bens@www.typius.com)
05:49:07 xstill- joins (xstill@fimu/xstill)
05:49:16 dexterfoo joins (dexter@2a01:7e00::f03c:91ff:fe86:59ec)
05:49:17 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
05:49:28 siers joins (~ij@user/ij)
05:49:29 mcfrdy joins (~mcfrdy@user/mcfrdy)
05:49:34 vysn joins (~vysn@user/vysn)
05:49:34 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 260 seconds)
05:50:21 qwedfg joins (~qwedfg@user/qwedfg)
05:53:04 matijja joins (~matijja@193.77.181.201)
05:54:59 × ircbrowse_tom quits (~ircbrowse@static.162.49.55.162.clients.your-server.de) (ZNC 1.7.5+deb4 - https://znc.in)
05:56:36 ircbrowse_tom joins (~ircbrowse@2a01:4f8:1c1c:9319::1)
05:56:36 Server sets mode +Cnt
05:56:41 × ikke quits (~kevin@delta.ikke.info) (Changing host)
05:56:41 ikke joins (~kevin@alpine/developer/ikke)
05:56:42 tolt joins (~weechat-h@li219-154.members.linode.com)
05:56:42 hexology joins (~hexology@user/hexology)
05:56:45 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
05:56:45 maerwald joins (~maerwald@mail.hasufell.de)
05:56:48 arahael joins (~arahael@125-209-128-15.tpgi.com.au)
05:56:50 heath joins (~heath@user/heath)
05:56:53 mrkajetanp joins (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
05:56:53 pierrot joins (~pi@user/pierrot)
05:56:57 blades joins (~blades@204.48.29.163)
05:56:57 beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001)
05:57:05 robbert-vdh joins (~robbert@robbertvanderhelm.nl)
05:58:03 megaTherion joins (~therion@unix.io)
05:58:20 lavaman joins (~lavaman@98.38.249.169)
06:00:17 tureba joins (~tureba@tureba.org)
06:00:17 ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com)
06:03:05 Ekho joins (~Ekho@user/ekho)
06:08:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
06:09:47 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 250 seconds)
06:11:07 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
06:11:42 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
06:13:08 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:16:02 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
06:16:39 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
06:22:32 × xff0x quits (~xff0x@2001:1a81:52ae:a700:ef5b:bdbe:c8a4:8fd2) (Ping timeout: 268 seconds)
06:23:10 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
06:23:15 xff0x joins (~xff0x@2001:1a81:52ae:a700:d47e:fd11:5546:7b77)
06:29:23 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
06:30:37 fef joins (~thedawn@user/thedawn)
06:35:18 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
06:44:43 deadmarshal joins (~deadmarsh@95.38.230.45)
06:47:44 <hololeap_> this might be a hard question to answer, but why does `cabal info` take so long to run?
06:47:50 hololeap_ is now known as hololeap
06:48:13 emf joins (~emf@2620:10d:c090:400::5:b07b)
06:49:06 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds)
06:49:28 × emf quits (~emf@2620:10d:c090:400::5:b07b) (Client Quit)
06:53:42 deadmarshal joins (~deadmarsh@95.38.230.45)
06:55:49 mamehiko joins (~robbie@140.254.77.249)
06:59:44 drdo joins (~drdo@roach0.drdo.eu)
07:03:31 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
07:03:52 stiell joins (~stiell@gateway/tor-sasl/stiell)
07:04:51 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
07:05:41 × mamehiko quits (~robbie@140.254.77.249) (Quit: Leaving)
07:07:39 × xff0x quits (~xff0x@2001:1a81:52ae:a700:d47e:fd11:5546:7b77) (Ping timeout: 260 seconds)
07:08:26 xff0x joins (~xff0x@2001:1a81:52ae:a700:2e71:8ba4:bf99:ed92)
07:09:27 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
07:19:12 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:21:36 mc47 joins (~mc47@xmonad/TheMC47)
07:24:03 × zhengcong quits (~zhengcong@113.140.11.120) (Remote host closed the connection)
07:24:10 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
07:32:34 lechner joins (~lechner@debian/lechner)
07:38:33 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
07:40:42 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
07:48:00 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
07:48:33 <sclv> hololeap: it runs pretty quick for me on the latest cabal. but in general its got to (i think) scan through the entire zipped collection of hackage cabal files to find the ones of interest
07:49:56 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds)
07:50:35 <sclv> i.e. `cabal info bytestring` runs in 1.5 secs on my box
07:51:57 × phma quits (~phma@2001:5b0:211f:e738:5c4d:dbc4:3f14:dae2) (Read error: Connection reset by peer)
07:52:23 × Firedancer quits (sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 265 seconds)
07:52:32 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 240 seconds)
07:52:41 × davetapley quits (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
07:52:52 × nrr__ quits (sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 265 seconds)
07:53:01 phma joins (phma@2001:5b0:211b:e388:ee5a:511e:22c4:3b06)
07:53:07 × alanz quits (sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
07:53:29 alanz joins (sid110616@id-110616.uxbridge.irccloud.com)
07:53:53 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
07:54:17 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
07:54:32 nrr__ joins (sid20938@id-20938.lymington.irccloud.com)
07:54:51 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
07:55:29 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
07:55:35 Firedancer joins (sid336191@id-336191.hampstead.irccloud.com)
07:55:35 gehmehgeh joins (~user@user/gehmehgeh)
07:55:55 davetapley joins (sid666@id-666.uxbridge.irccloud.com)
07:56:23 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
07:57:30 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
07:58:18 deadmarshal joins (~deadmarsh@95.38.230.45)
07:59:08 × jmorris quits (uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
07:59:56 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
08:01:20 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:03:54 chele joins (~chele@user/chele)
08:04:01 lortabac joins (~lortabac@2a01:e0a:541:b8f0:7c6d:4c33:f4a3:2a22)
08:04:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:06:03 trcc joins (~trcc@users-5343.st.net.au.dk)
08:06:05 × trcc quits (~trcc@users-5343.st.net.au.dk) (Remote host closed the connection)
08:06:55 trcc joins (~trcc@users-5343.st.net.au.dk)
08:10:03 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
08:10:09 trcc_ joins (~trcc@eduroam09.au.dk)
08:10:13 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:12:26 × trcc_ quits (~trcc@eduroam09.au.dk) (Read error: Connection reset by peer)
08:12:36 trcc_ joins (~trcc@eduroam09.au.dk)
08:13:27 × trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 260 seconds)
08:14:47 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
08:14:51 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds)
08:15:21 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
08:25:37 michalz joins (~michalz@185.246.204.33)
08:30:32 deadmarshal joins (~deadmarsh@95.38.230.45)
08:30:38 neurocyte0132889 joins (~neurocyte@45.10.60.180)
08:30:38 × neurocyte0132889 quits (~neurocyte@45.10.60.180) (Changing host)
08:30:38 neurocyte0132889 joins (~neurocyte@user/neurocyte)
08:33:00 × mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Read error: Connection reset by peer)
08:33:13 mvk joins (~mvk@2607:fea8:5cc1:fa00::4702)
08:40:25 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection)
08:43:45 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
08:48:41 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
08:50:24 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
08:51:34 × dsrt^ quits (~dsrt@68.101.63.101) (Remote host closed the connection)
08:53:12 fendor joins (~fendor@178.165.196.64.wireless.dyn.drei.com)
08:55:13 yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net)
08:58:15 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds)
09:02:40 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
09:02:41 × yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
09:02:53 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:03:45 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
09:04:22 shailangsa joins (~shailangs@host86-186-133-114.range86-186.btcentralplus.com)
09:11:37 kuribas joins (~user@ptr-25vy0i9f20n8puprvgm.18120a2.ip6.access.telenet.be)
09:12:23 × trcc_ quits (~trcc@eduroam09.au.dk) (Remote host closed the connection)
09:16:09 × timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
09:16:38 trcc_ joins (~trcc@users-1190.st.net.au.dk)
09:16:57 cfricke joins (~cfricke@user/cfricke)
09:17:28 allbery_b joins (~geekosaur@xmonad/geekosaur)
09:17:28 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
09:17:31 allbery_b is now known as geekosaur
09:17:49 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:19:51 × alzgh quits (~alzgh@user/alzgh) (Ping timeout: 256 seconds)
09:20:15 × mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds)
09:20:20 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
09:24:50 acidjnk joins (~acidjnk@2001:16b8:6720:5a00:f48d:53a:53a4:d2dc)
09:27:39 × edmundnoble quits (sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 260 seconds)
09:27:39 × SethTisue__ quits (sid14912@id-14912.ilkley.irccloud.com) (Ping timeout: 260 seconds)
09:27:39 × caasih quits (sid13241@id-13241.ilkley.irccloud.com) (Ping timeout: 260 seconds)
09:27:59 × jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 264 seconds)
09:27:59 × PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:27:59 × hongminhee quits (sid295@id-295.tinside.irccloud.com) (Ping timeout: 264 seconds)
09:27:59 × truckasaurus quits (sid457088@id-457088.helmsley.irccloud.com) (Ping timeout: 264 seconds)
09:28:08 × sa quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 268 seconds)
09:28:08 × christiaanb quits (sid84827@id-84827.lymington.irccloud.com) (Ping timeout: 268 seconds)
09:28:14 × dpratt__ quits (sid193493@id-193493.helmsley.irccloud.com) (Ping timeout: 246 seconds)
09:28:14 × mrianbloom quits (sid350277@id-350277.ilkley.irccloud.com) (Ping timeout: 246 seconds)
09:28:14 × AndreasK__ quits (sid320732@id-320732.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
09:28:14 × sa1_ quits (sid7690@id-7690.ilkley.irccloud.com) (Ping timeout: 246 seconds)
09:28:14 × b20n quits (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
09:28:16 × Firedancer quits (sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 245 seconds)
09:28:16 × alanz quits (sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 245 seconds)
09:28:27 × davetapley quits (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
09:28:27 × Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Ping timeout: 250 seconds)
09:28:27 × parseval quits (sid239098@id-239098.helmsley.irccloud.com) (Ping timeout: 250 seconds)
09:28:27 × bjs quits (sid190364@user/bjs) (Ping timeout: 250 seconds)
09:28:27 × cln quits (sid336875@id-336875.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:28:27 × ysh quits (sid6017@id-6017.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:28:27 × aristid quits (sid1599@id-1599.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
09:28:32 × whez quits (sid470288@id-470288.lymington.irccloud.com) (Ping timeout: 240 seconds)
09:28:34 × Pent quits (sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 265 seconds)
09:28:34 × teehemkay quits (sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 265 seconds)
09:28:34 × alinab quits (sid468903@id-468903.helmsley.irccloud.com) (Ping timeout: 265 seconds)
09:28:35 × elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 246 seconds)
09:28:35 × carter quits (sid14827@id-14827.helmsley.irccloud.com) (Ping timeout: 246 seconds)
09:28:35 × rune quits (sid21167@id-21167.ilkley.irccloud.com) (Ping timeout: 246 seconds)
09:28:35 × enemeth79 quits (sid309041@id-309041.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:28:35 × taktoa[c] quits (sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 264 seconds)
09:28:35 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:28:35 × supersven quits (sid501114@id-501114.ilkley.irccloud.com) (Ping timeout: 264 seconds)
09:28:35 × rtpg quits (sid443069@id-443069.ilkley.irccloud.com) (Ping timeout: 260 seconds)
09:28:35 × hook54321 quits (sid149355@user/hook54321) (Ping timeout: 260 seconds)
09:28:35 × edwardk quits (sid47016@haskell/developer/edwardk) (Ping timeout: 260 seconds)
09:28:35 × aarchi quits (sid486183@id-486183.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
09:28:35 × bw__ quits (sid2730@id-2730.ilkley.irccloud.com) (Ping timeout: 260 seconds)
09:28:35 × systemfault quits (sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
09:28:41 × nrr__ quits (sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 245 seconds)
09:28:45 × saolsen quits (sid26430@id-26430.lymington.irccloud.com) (Ping timeout: 268 seconds)
09:28:53 × cbarrett quits (sid192934@id-192934.helmsley.irccloud.com) (Ping timeout: 250 seconds)
09:28:53 × T_S_ quits (sid501726@id-501726.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
09:28:53 × obviyus quits (sid415299@user/obviyus) (Ping timeout: 250 seconds)
09:28:56 × angerman quits (sid209936@id-209936.ilkley.irccloud.com) (Ping timeout: 246 seconds)
09:28:56 × bradparker quits (sid262931@id-262931.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
09:28:56 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 246 seconds)
09:29:02 × linkedlistist quits (uid528169@id-528169.lymington.irccloud.com) (Ping timeout: 240 seconds)
09:29:03 × SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 265 seconds)
09:29:03 × integral quits (sid296274@user/integral) (Ping timeout: 265 seconds)
09:29:03 × bbhoss quits (sid18216@id-18216.tinside.irccloud.com) (Ping timeout: 265 seconds)
09:29:03 × joel135 quits (sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 265 seconds)
09:29:03 × teehemkay_ quits (sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 265 seconds)
09:29:03 × kaizen quits (sid501599@id-501599.helmsley.irccloud.com) (Ping timeout: 265 seconds)
09:29:03 × tnks quits (sid412124@id-412124.helmsley.irccloud.com) (Ping timeout: 265 seconds)
09:29:03 × lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (Ping timeout: 260 seconds)
09:29:03 × vito quits (sid1962@user/vito) (Ping timeout: 260 seconds)
09:29:11 × agander_m quits (sid407952@id-407952.tinside.irccloud.com) (Ping timeout: 264 seconds)
09:29:11 × mustafa quits (sid502723@rockylinux/releng/mustafa) (Ping timeout: 264 seconds)
09:29:11 × kristjansson_ quits (sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 264 seconds)
09:29:11 × scav quits (sid309693@id-309693.helmsley.irccloud.com) (Ping timeout: 264 seconds)
09:29:11 × degraafk quits (sid71464@id-71464.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:29:11 × JSharp quits (sid4580@id-4580.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:29:11 × grfn quits (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 264 seconds)
09:29:17 × S11001001 quits (sid42510@id-42510.ilkley.irccloud.com) (Ping timeout: 246 seconds)
09:29:18 linkedlistist joins (uid528169@lymington.irccloud.com)
09:29:19 × tapas quits (sid467876@id-467876.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:29:19 × pepeiborra quits (sid443799@id-443799.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:29:19 × ProofTechnique quits (sid79547@id-79547.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:29:19 × gmc_ quits (sid58314@id-58314.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:29:19 × jonrh_ quits (sid5185@id-5185.ilkley.irccloud.com) (Ping timeout: 250 seconds)
09:29:20 rune joins (sid21167@ilkley.irccloud.com)
09:29:21 whez joins (sid470288@lymington.irccloud.com)
09:29:21 gregberns___ joins (sid315709@helmsley.irccloud.com)
09:29:21 alinab joins (sid468903@helmsley.irccloud.com)
09:29:22 tnks joins (sid412124@helmsley.irccloud.com)
09:29:22 agander_m joins (sid407952@tinside.irccloud.com)
09:29:22 × _0x47 quits (sid508683@id-508683.tinside.irccloud.com) (Ping timeout: 268 seconds)
09:29:22 × hamishmack quits (sid389057@id-389057.hampstead.irccloud.com) (Ping timeout: 268 seconds)
09:29:22 × rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 268 seconds)
09:29:22 × iphy quits (sid67735@id-67735.lymington.irccloud.com) (Ping timeout: 268 seconds)
09:29:22 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 268 seconds)
09:29:22 × tritlo quits (sid58727@user/tritlo) (Ping timeout: 268 seconds)
09:29:22 × gregberns__ quits (sid315709@id-315709.helmsley.irccloud.com) (Ping timeout: 268 seconds)
09:29:23 gregberns___ is now known as gregberns__
09:29:23 teehemkay_ joins (sid14792@lymington.irccloud.com)
09:29:23 degraafk joins (sid71464@lymington.irccloud.com)
09:29:23 parseval joins (sid239098@helmsley.irccloud.com)
09:29:23 amir_ joins (sid22336@user/amir)
09:29:24 iphy_ joins (sid67735@lymington.irccloud.com)
09:29:24 grfn joins (sid449115@helmsley.irccloud.com)
09:29:24 hamishmack_ joins (sid389057@hampstead.irccloud.com)
09:29:25 scav joins (sid309693@helmsley.irccloud.com)
09:29:25 _0x47_ joins (sid508683@tinside.irccloud.com)
09:29:25 bbhoss joins (sid18216@tinside.irccloud.com)
09:29:27 T_S_ joins (sid501726@uxbridge.irccloud.com)
09:29:27 gonz_____ joins (sid304396@lymington.irccloud.com)
09:29:32 × awpr quits (uid446117@id-446117.lymington.irccloud.com) (Ping timeout: 240 seconds)
09:29:32 × gonz____ quits (sid304396@id-304396.lymington.irccloud.com) (Ping timeout: 265 seconds)
09:29:32 × sclv quits (sid39734@haskell/developer/sclv) (Ping timeout: 265 seconds)
09:29:32 × NemesisD quits (sid24071@id-24071.lymington.irccloud.com) (Ping timeout: 265 seconds)
09:29:32 × amir quits (sid22336@user/amir) (Ping timeout: 265 seconds)
09:29:32 × NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 265 seconds)
09:29:38 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
09:29:38 amir_ is now known as amir
09:29:44 deadmarshal joins (~deadmarsh@95.38.230.45)
09:29:47 angerman joins (sid209936@ilkley.irccloud.com)
09:29:47 × hubvu quits (sid495858@user/hubvu) (Ping timeout: 264 seconds)
09:29:47 × ephemient quits (uid407513@id-407513.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:29:47 × hendi quits (sid489601@id-489601.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:29:47 × Boarders_ quits (sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 264 seconds)
09:29:47 × acertain quits (sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 264 seconds)
09:29:47 × astra` quits (sid289983@user/amish) (Ping timeout: 264 seconds)
09:29:47 × idnar quits (sid12240@debian/mithrandi) (Ping timeout: 264 seconds)
09:29:47 × mcfilib quits (sid302703@user/mcfilib) (Ping timeout: 264 seconds)
09:29:50 sclv joins (sid39734@haskell/developer/sclv)
09:29:51 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 264 seconds)
09:29:53 obviyus joins (sid415299@user/obviyus)
09:29:59 × typetetris quits (sid275937@id-275937.tinside.irccloud.com) (Ping timeout: 268 seconds)
09:29:59 × philpax_ quits (sid516926@id-516926.lymington.irccloud.com) (Ping timeout: 268 seconds)
09:29:59 × aria quits (sid380617@id-380617.lymington.irccloud.com) (Ping timeout: 268 seconds)
09:29:59 × jmct_ quits (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 268 seconds)
09:29:59 × pjlsergeant quits (sid143467@id-143467.hampstead.irccloud.com) (Ping timeout: 268 seconds)
09:29:59 × ehamberg quits (sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 268 seconds)
09:30:01 × glowcoil quits (sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 265 seconds)
09:30:01 × jakesyl_ quits (sid56879@id-56879.hampstead.irccloud.com) (Ping timeout: 265 seconds)
09:30:01 × conjunctive quits (sid433686@id-433686.helmsley.irccloud.com) (Ping timeout: 265 seconds)
09:30:01 × gaze___ quits (sid387101@id-387101.helmsley.irccloud.com) (Ping timeout: 265 seconds)
09:30:03 tritlo joins (sid58727@user/tritlo)
09:30:04 rubin55 joins (sid175221@hampstead.irccloud.com)
09:30:16 glowcoil joins (sid3405@tinside.irccloud.com)
09:30:26 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
09:30:28 gaze___ joins (sid387101@helmsley.irccloud.com)
09:30:33 alanz joins (sid110616@uxbridge.irccloud.com)
09:30:36 taktoa[c] joins (sid282096@tinside.irccloud.com)
09:30:38 Boarders_ joins (sid425905@lymington.irccloud.com)
09:30:41 kristjansson_ joins (sid126207@tinside.irccloud.com)
09:30:42 mcfilib joins (sid302703@user/mcfilib)
09:30:47 pepeiborra joins (sid443799@ilkley.irccloud.com)
09:30:48 ysh joins (sid6017@ilkley.irccloud.com)
09:30:50 typetetris joins (sid275937@tinside.irccloud.com)
09:30:50 cln joins (sid336875@ilkley.irccloud.com)
09:31:02 × acidjnk quits (~acidjnk@2001:16b8:6720:5a00:f48d:53a:53a4:d2dc) (Ping timeout: 240 seconds)
09:31:06 joel135 joins (sid136450@hampstead.irccloud.com)
09:31:14 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
09:31:25 ehamberg joins (sid18208@hampstead.irccloud.com)
09:31:26 jmct_ joins (sid160793@tinside.irccloud.com)
09:31:29 bjs joins (sid190364@user/bjs)
09:31:35 hubvu joins (sid495858@user/hubvu)
09:31:44 vito joins (sid1962@user/vito)
09:31:46 carter joins (sid14827@helmsley.irccloud.com)
09:31:47 nrr__ joins (sid20938@lymington.irccloud.com)
09:31:48 kaizen joins (sid501599@helmsley.irccloud.com)
09:31:48 conjunctive joins (sid433686@helmsley.irccloud.com)
09:31:48 NiKaN joins (sid385034@helmsley.irccloud.com)
09:31:48 JSharp joins (sid4580@lymington.irccloud.com)
09:31:49 meinside joins (uid24933@helmsley.irccloud.com)
09:31:50 ProofTechnique joins (sid79547@ilkley.irccloud.com)
09:31:51 CiaoSen joins (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
09:31:51 dpratt__ joins (sid193493@helmsley.irccloud.com)
09:31:56 gmc_ joins (sid58314@ilkley.irccloud.com)
09:32:08 enemeth79 joins (sid309041@lymington.irccloud.com)
09:32:08 saolsen joins (sid26430@lymington.irccloud.com)
09:32:11 idnar joins (sid12240@debian/mithrandi)
09:32:12 tapas joins (sid467876@ilkley.irccloud.com)
09:32:16 ephemient joins (uid407513@lymington.irccloud.com)
09:32:17 jonrh_ joins (sid5185@ilkley.irccloud.com)
09:32:22 mustafa joins (sid502723@rockylinux/releng/mustafa)
09:32:23 dsal joins (sid13060@lymington.irccloud.com)
09:32:32 awpr joins (uid446117@lymington.irccloud.com)
09:32:47 SanchayanMaity joins (sid478177@hampstead.irccloud.com)
09:32:47 pjlsergeant joins (sid143467@hampstead.irccloud.com)
09:32:49 astra` joins (sid289983@user/amish)
09:32:54 dmj` joins (sid72307@hampstead.irccloud.com)
09:33:02 hook54321 joins (sid149355@user/hook54321)
09:33:05 truckasaurus joins (sid457088@helmsley.irccloud.com)
09:33:07 elvishjerricco joins (sid237756@helmsley.irccloud.com)
09:33:13 jakesyl_ joins (sid56879@hampstead.irccloud.com)
09:33:16 NemesisD joins (sid24071@lymington.irccloud.com)
09:33:17 hendi joins (sid489601@lymington.irccloud.com)
09:33:18 philpax_ joins (sid516926@lymington.irccloud.com)
09:33:21 Adeon joins (sid418992@lymington.irccloud.com)
09:33:27 systemfault joins (sid267009@uxbridge.irccloud.com)
09:33:39 SrPx joins (sid108780@uxbridge.irccloud.com)
09:33:40 alzgh joins (alzgh@user/alzgh)
09:33:41 bw__ joins (sid2730@ilkley.irccloud.com)
09:33:57 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
09:33:57 acertain joins (sid470584@hampstead.irccloud.com)
09:33:58 aria joins (sid380617@lymington.irccloud.com)
09:34:03 cbarrett joins (sid192934@helmsley.irccloud.com)
09:34:06 Firedancer joins (sid336191@hampstead.irccloud.com)
09:34:07 S11001001 joins (sid42510@ilkley.irccloud.com)
09:34:39 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
09:34:51 Pent joins (sid313808@lymington.irccloud.com)
09:34:58 integral joins (sid296274@user/integral)
09:35:02 sa joins (sid1055@tinside.irccloud.com)
09:35:04 aarchi joins (sid486183@uxbridge.irccloud.com)
09:35:07 bradparker joins (sid262931@uxbridge.irccloud.com)
09:35:08 edwardk joins (sid47016@haskell/developer/edwardk)
09:35:12 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
09:36:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection)
09:37:32 × ProofTechnique quits (sid79547@ilkley.irccloud.com) (Ping timeout: 240 seconds)
09:37:54 × Pent quits (sid313808@lymington.irccloud.com) (Max SendQ exceeded)
09:37:55 × jakesyl_ quits (sid56879@hampstead.irccloud.com) (Max SendQ exceeded)
09:38:02 × rubin55 quits (sid175221@hampstead.irccloud.com) (Ping timeout: 240 seconds)
09:38:09 Pent joins (sid313808@id-313808.lymington.irccloud.com)
09:38:15 × typetetris quits (sid275937@tinside.irccloud.com) (Ping timeout: 264 seconds)
09:38:33 jakesyl_ joins (sid56879@id-56879.hampstead.irccloud.com)
09:38:41 × philpax_ quits (sid516926@lymington.irccloud.com) (Ping timeout: 245 seconds)
09:38:52 philpax_ joins (sid516926@id-516926.lymington.irccloud.com)
09:39:12 rubin55 joins (sid175221@id-175221.hampstead.irccloud.com)
09:40:42 ProofTechnique joins (sid79547@id-79547.ilkley.irccloud.com)
09:41:26 typetetris joins (sid275937@id-275937.tinside.irccloud.com)
09:42:17 jackdk joins (sid373013@cssa/jackdk)
09:42:18 hongminhee joins (sid295@id-295.tinside.irccloud.com)
09:42:21 christiaanb joins (sid84827@id-84827.lymington.irccloud.com)
09:42:26 PotatoGim joins (sid99505@id-99505.lymington.irccloud.com)
09:42:34 SethTisue__ joins (sid14912@id-14912.ilkley.irccloud.com)
09:42:35 edmundnoble joins (sid229620@id-229620.helmsley.irccloud.com)
09:42:41 caasih joins (sid13241@id-13241.ilkley.irccloud.com)
09:42:51 supersven joins (sid501114@id-501114.ilkley.irccloud.com)
09:43:05 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
09:43:35 AndreasK__ joins (sid320732@id-320732.uxbridge.irccloud.com)
09:43:36 b20n joins (sid115913@id-115913.uxbridge.irccloud.com)
09:43:37 mrianbloom joins (sid350277@id-350277.ilkley.irccloud.com)
09:43:37 rtpg joins (sid443069@id-443069.ilkley.irccloud.com)
09:43:41 sa1_ joins (sid7690@id-7690.ilkley.irccloud.com)
09:43:45 aristid joins (sid1599@id-1599.uxbridge.irccloud.com)
09:43:47 davetapley joins (sid666@id-666.uxbridge.irccloud.com)
09:43:56 teehemkay joins (sid14792@id-14792.lymington.irccloud.com)
09:47:12 jakalx parts (~jakalx@base.jakalx.net) ()
09:49:30 jakalx joins (~jakalx@base.jakalx.net)
09:56:16 DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
09:59:33 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
10:00:17 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
10:01:54 × fendor quits (~fendor@178.165.196.64.wireless.dyn.drei.com) (Read error: Connection reset by peer)
10:02:28 acidjnk joins (~acidjnk@p200300d0c7271e45b900d7f27b1ad71c.dip0.t-ipconnect.de)
10:02:45 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
10:03:09 max1984 joins (~Massi@host-79-33-240-217.retail.telecomitalia.it)
10:06:24 max1984 parts (~Massi@host-79-33-240-217.retail.telecomitalia.it) ()
10:16:12 ph88 joins (~ph88@95.90.240.104)
10:16:39 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds)
10:16:43 × ph88 quits (~ph88@95.90.240.104) (Client Quit)
10:17:17 ph88 joins (~ph88@95.90.240.104)
10:18:29 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
10:18:38 chexum joins (~quassel@gateway/tor-sasl/chexum)
10:20:21 rribeiro joins (~rodrigo@2804:5c:55cc:9e00:440a:f8e5:a6cd:124c)
10:22:04 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
10:23:04 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
10:24:37 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
10:25:43 sprout_ joins (~quassel@2a02:a467:ccd6:1:990:f1e:8987:d5f9)
10:29:11 × sprout quits (~quassel@2a02:a467:ccd6:1:7816:2c69:3dcc:933a) (Ping timeout: 264 seconds)
10:29:51 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
10:32:04 sprout joins (~quassel@2a02:a467:ccd6:1:e931:44b2:abc5:155b)
10:33:46 × sagax quits (~sagax_nb@user/sagax) (Excess Flood)
10:33:52 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
10:33:52 maerwald joins (~maerwald@user/maerwald)
10:35:23 Axma55388 joins (~Axman6@user/axman6)
10:35:51 × sprout_ quits (~quassel@2a02:a467:ccd6:1:990:f1e:8987:d5f9) (Ping timeout: 264 seconds)
10:35:58 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds)
10:37:18 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
10:39:58 × chele quits (~chele@user/chele) (Remote host closed the connection)
10:40:05 chele_ joins (~chele@user/chele)
10:43:03 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Ping timeout: 264 seconds)
10:43:55 sprout_ joins (~quassel@2a02:a467:ccd6:1:29bf:5ae9:f17:83c0)
10:43:58 chele_ is now known as chele
10:47:01 × sprout quits (~quassel@2a02:a467:ccd6:1:e931:44b2:abc5:155b) (Ping timeout: 245 seconds)
10:51:20 raoul joins (~raoul@95.179.203.88)
10:58:11 × vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds)
11:00:20 deadmarshal joins (~deadmarsh@95.38.230.45)
11:00:29 sagax joins (~sagax_nb@user/sagax)
11:02:28 × Topsi quits (~Tobias@dyndsl-095-033-023-020.ewe-ip-backbone.de) (Read error: Connection reset by peer)
11:03:50 __monty__ joins (~toonn@user/toonn)
11:04:10 × xsperry quits (~xs@user/xsperry) ()
11:05:16 × Axma55388 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds)
11:07:30 Axman6 joins (~Axman6@user/axman6)
11:10:04 × Unhammer quits (~Unhammer@user/unhammer) (Ping timeout: 265 seconds)
11:10:05 × blackcap quits (~blackcap@144.89-10-135.nextgentel.com) (Read error: Connection reset by peer)
11:10:15 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
11:10:19 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
11:10:53 neurocyte0132889 joins (~neurocyte@45.10.60.180)
11:10:53 × neurocyte0132889 quits (~neurocyte@45.10.60.180) (Changing host)
11:10:53 neurocyte0132889 joins (~neurocyte@user/neurocyte)
11:14:37 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
11:15:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:15:51 blackcap joins (~blackcap@144.89-10-135.nextgentel.com)
11:17:22 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds)
11:17:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:18:54 Axman6 joins (~Axman6@user/axman6)
11:22:51 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:23:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:28:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
11:28:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:29:22 chomwitt joins (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
11:33:55 xsperry joins (~xs@user/xsperry)
11:34:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:34:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:39:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:40:05 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:44:31 <Franciman> does haskell allow talking about propositional identity?
11:44:42 sprout joins (~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761)
11:45:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
11:45:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:45:46 × CiaoSen quits (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
11:46:05 × martin02 quits (~silas@141.84.69.76) (Ping timeout: 256 seconds)
11:47:15 × puke quits (~puke@user/puke) (Quit: puke)
11:47:51 × sprout_ quits (~quassel@2a02:a467:ccd6:1:29bf:5ae9:f17:83c0) (Ping timeout: 245 seconds)
11:50:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:51:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:52:28 × rribeiro quits (~rodrigo@2804:5c:55cc:9e00:440a:f8e5:a6cd:124c) (Remote host closed the connection)
11:52:31 trcc joins (~trcc@eduroam09.au.dk)
11:56:11 × trcc_ quits (~trcc@users-1190.st.net.au.dk) (Ping timeout: 245 seconds)
11:57:54 × trcc quits (~trcc@eduroam09.au.dk) (Remote host closed the connection)
11:58:26 trcc joins (~trcc@users-5343.st.net.au.dk)
12:01:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
12:02:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:12:48 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
12:13:39 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds)
12:15:23 jippiedoe joins (~david@2a02-a44c-e14e-1-c6ad-4343-92dc-4cb2.fixed6.kpn.net)
12:17:01 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
12:26:20 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
12:31:03 × jippiedoe quits (~david@2a02-a44c-e14e-1-c6ad-4343-92dc-4cb2.fixed6.kpn.net) (Ping timeout: 264 seconds)
12:38:36 × alzgh quits (alzgh@user/alzgh) (Remote host closed the connection)
12:38:56 alzgh joins (alzgh@user/alzgh)
12:49:32 jippiedoe joins (~david@2a02-a44c-e14e-1-c482-95c0-575a-83bc.fixed6.kpn.net)
12:54:40 Cajun joins (~Cajun@user/cajun)
12:54:42 CiaoSen joins (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:01:08 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
13:10:48 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
13:11:39 deadmarshal joins (~deadmarsh@95.38.230.45)
13:15:21 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
13:15:34 × bw__ quits (sid2730@ilkley.irccloud.com) ()
13:16:00 bw joins (sid2730@user/betawaffle)
13:26:05 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:28:07 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
13:29:55 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
13:32:57 × V quits (~v@anomalous.eu) (Remote host closed the connection)
13:34:15 V joins (~v@anomalous.eu)
13:36:48 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:45:18 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:48:57 timCF joins (~timCF@200-149-20-81.sta.estpak.ee)
13:50:12 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
13:52:22 <timCF> Hello! Are there any runtime perfornamce issues because using TypeApplications `@a` syntax instead of `Proxy :: Proxy a` in generic functions with `forall a.`? For me `@a` looks better, and I'll use it any day of the week instead of Proxy, but is it coming for free in terms of performance?
13:52:48 <merijn> timCF: Performance: Probably. Maintenance: No
13:52:56 <dminuoso> TypeApplication could probably be cheaper since there's no token that GHC must optimize away
13:53:08 <dminuoso> But I call premature optimization
13:54:02 <timCF> You mean TypeApplications might be even better in terms of performance?
13:54:03 slowButPresent joins (~slowButPr@user/slowbutpresent)
13:54:06 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
13:54:25 <merijn> TypeApplications may also break randomly when your dependencies *OR* compiler update, so...
13:54:26 <dminuoso> timCF: Personally I prefer Proxy in most situations because a) it guarantees stable and communicatable API, b) doesn't demand yet-another extension from a user, and it's often easier to pass things around by binding a proxy pattern rather than introduce some forall at some outer level
13:55:19 <merijn> TypeApplications is great, if you like things like "accidentall tying the stability of my API to implementation details of your specific compiler version"!
13:55:20 <dminuoso> If both sides (the definition and call site) are under your full control, it probably doesn't matter
13:55:34 <dminuoso> But be sure to introduce all variables explicitly via forall
13:56:52 <timCF> merijn: dminuoso: thanks!
13:57:23 <timCF> merijn: you mean it might brake when I'm using some dependency, and then they switch order in forall expression for some reason?
13:57:38 <dminuoso> Also, TypeApplications tends to be a bit brittle when since you cant apply polymorphic things to visible type arguments after inference has done its job
13:57:48 <merijn> timCF: Yes. And also if they never used an explicit forall and the GHC infers a different order for implicit foralls
13:57:49 <dminuoso> e.g.:
13:57:52 <dminuoso> % f = id
13:57:52 <yahb> dminuoso:
13:57:54 <dminuoso> % :t f
13:57:54 <yahb> dminuoso: a -> a
13:58:04 <dminuoso> % :t f @Int
13:58:05 <yahb> dminuoso: ; <interactive>:1:1: error:; * Cannot apply expression of type `a0 -> a0'; to a visible type argument `Int'; * In the expression: f @Int
13:58:06 <merijn> timCF: Which is not a hypothetical situation, because we've already had 1 GHC release that broke TypeApplications that way
13:58:19 <merijn> (changed the order constraints were inferred in)
13:58:23 <dminuoso> timCF: ^- Do instantly and intuitively know why this is?
13:59:12 <timCF> dminuoso: AllowAmbiguousTypes or something like this?
13:59:16 <dminuoso> Nope.
13:59:31 <merijn> Is it...the monomorphism restriction? :D
13:59:38 <dminuoso> Nope
13:59:42 <merijn> aww
13:59:43 <kuribas> merijn: solution: always use explicit forall.
14:00:04 <dminuoso> timCF: You cant apply things with "invisible" type variables to visible type arguments.
14:00:14 <dminuoso> There's subtle reasons for why all that is
14:00:40 <dminuoso> But the consequence is that you cant use TypeApplications as freely because as soon as GHC does type inference, you cant use TypeApplications anymore
14:00:51 <dminuoso> That is, if GHC repolymorphizes
14:00:54 <merijn> kuribas: Do your dependencies do that, though?
14:01:12 <dminuoso> timCF: Proxy is really much more solid and obvious. :)
14:01:20 <timCF> merijn: who knows really :)
14:01:22 <dminuoso> Albeit a bit noisy, but other than that it has mostly just benefits
14:01:31 <merijn> kuribas: Also, I don't, because I dislike TypeApplications for reasons above
14:01:31 <kuribas> merijn: I don't use TypeApplications if they don't.
14:01:50 <dminuoso> timCF: Though you can do one interesting combination
14:01:52 <dminuoso> That one I favor
14:01:57 <dminuoso> Proxy *with* TypeApplications
14:02:03 <kuribas> Just use a language where you can apply types as arguments.
14:02:04 <dminuoso> f (Proxy @Int)
14:02:12 <dminuoso> This is a nice middle ground
14:02:16 <timCF> dminuoso: that's actually cool
14:02:58 <timCF> kuribas: for example?
14:03:05 <kuribas> timCF: idris
14:03:07 <merijn> Idris :p
14:03:10 <timCF> hmmm
14:03:11 <merijn> Agda, Coq
14:03:18 <merijn> timCF: He's mostly joking :p
14:03:21 <merijn> (I assume)
14:03:30 <timCF> Are they better version of Haskell then? :)
14:03:42 <timCF> (probably not)
14:03:52 <Hecate> Idris 2
14:03:58 <kuribas> merijn: yes and no. If you are doing extensive type level programming, you may be better of with idris than with haskell.
14:04:12 <merijn> timCF: Define "beter", "version", and "haskell" :p
14:04:25 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
14:05:34 <timCF> Prelude> better version haskell
14:05:34 <timCF>
14:05:34 <timCF> <interactive>:1:1: error:
14:05:34 <timCF> Variable not in scope: better :: t0 -> t1 -> t
14:05:34 <timCF>
14:05:36 <timCF> <interactive>:1:8: error: Variable not in scope: version
14:05:39 <timCF>
14:05:41 <timCF> <interactive>:1:16: error: Variable not in scope: haskell
14:05:45 son0p joins (~ff@181.136.122.143)
14:05:50 <timCF> :)
14:07:31 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
14:09:23 <kuribas> merijn: idris is not production ready, but it will never be if people keep shoehorning type level stuff into haskell, instead of using a more appropriate language.
14:09:37 <maerwald> kuribas++
14:10:19 <merijn> Haskell won't be production ready if people keep doing that too :p
14:10:31 <maerwald> but I want my toys!
14:11:45 <kuribas> merijn: it has been for a long time.
14:12:14 <kuribas> merijn: wait, you mean it will not be production ready if people keep adding on top of it?
14:12:32 × Philonous_ quits (~Philonous@user/philonous) (Quit: ZNC - https://znc.in)
14:12:33 <timCF> merijn: I actually never tried any of them (Idris, Agda, Coq). Which of them is the most enterprise-oriented in your opinion? Toys are important, but I'm kinda doing web programming.. It will be hard without Persistent, Esqueleto, Yesod, Servant, Conduit and others
14:12:54 <kuribas> merijn: If so, I agree. I'd rather see other improvements than DH.
14:13:02 Philonous joins (~Philonous@user/philonous)
14:13:08 <kuribas> in particular tooling improvements.
14:13:26 <merijn> kuribas: The latter, yes
14:13:44 <dminuoso> Web development itself is a disgusting field honestly
14:14:06 <kuribas> timCF: frankly none of them.
14:14:11 <dminuoso> More so than other fields this requires good availability of libraries to help pull the weight.
14:14:25 <kuribas> timCF: you may use them as a prototype, or for verifying parts of your program.
14:14:28 <timCF> dminuoso: With Haskell not that disgusting actually. After switch from Erlang I'm sleeping much better at night.
14:14:59 <dminuoso> We dont have a plethora of good options to generate HTML with
14:15:10 <timCF> Yesod/Blaze?
14:15:17 <dminuoso> Highly opinionated.
14:15:24 <maerwald> dminuoso: because we're busy adding more complicated stuff to our toybelt
14:15:29 <maerwald> that serves a few edge cases
14:16:02 <dminuoso> There's also reflex-dom if you enjoy FRP
14:16:13 <dminuoso> But the toolstack you start accomulating gets unreal
14:16:18 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
14:16:34 <kuribas> IMO Dependent Haskell makes even less sense for teaching.
14:17:53 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:18:33 <dminuoso> timCF: Also yesod is becoming less and less relevant, there's not as many active contributions anymore
14:18:50 <dminuoso> And it comes with a bus factor of 1.1
14:18:54 <kuribas> dminuoso: as opposed to what?
14:18:56 <maerwald> fpco seems to shift more into devops, rust and blockchain
14:19:11 <dminuoso> kuribas: As opposed to the past.
14:19:14 <dminuoso> https://github.com/yesodweb/yesod/graphs/contributors
14:19:53 <kuribas> dminuoso: I meant, what are people using then?
14:20:09 <dminuoso> No clue
14:20:18 <kuribas> servant?
14:20:26 <kuribas> spock, ...
14:20:28 <dminuoso> Based on various factors Id assume web developers simply pick more suitable tools.
14:20:36 <dminuoso> Based on surrounding technologies
14:20:41 <maerwald> same for snap https://github.com/snapframework/snap/graphs/contributors
14:20:41 <dminuoso> Say they might build the frontend in reactjs
14:21:00 jkaye joins (~jkaye@2601:281:8300:7530:c25c:6460:bfbf:33d6)
14:21:22 <dminuoso> maerwald: Yup.
14:21:53 aliosablack joins (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
14:22:09 × chomwitt quits (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer)
14:22:42 <dminuoso> From a business point of view, deciding to simply do it in Django seems more worthwhile. You have to be fairly religious to do web development in Haskell.
14:23:06 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
14:23:27 <merijn> dminuoso: The kinda religious that'd just switch to Ur/Web ;)
14:23:47 <kuribas> dminuoso: or clojure?
14:24:16 <timCF> dminuoso: Yesod is just enterprise web framework for Haskell, when I've started to use it - I had no idea how to write actual Haskell, but was already able to build websites with postgres storage. And then I've gradually learned about stuff like Functors, Applicatives, Monads, Alternatives (just new use cases when more complex web forms were needed)
14:24:28 <dminuoso> timCF: What does "enterprise web framework" even mean?
14:24:41 <maerwald> dminuoso: you start with no clue what you're doing
14:24:47 <dminuoso> ah heh
14:24:55 <timCF> dminuoso: maerwald: exactly
14:25:36 <dminuoso> kuribas: Like I said, Id focus on picking a language that has rich tooling and active participation of wide industry. For web development, that's mostly JavaScript and some Python.
14:25:43 <timCF> It's not the most efficient way of learning Haskell anyway. It's actually very inefficient, but works for some people
14:25:53 <merijn> dminuoso: I have a better solution!
14:25:58 <Franciman> dminuoso: I would choose a language which is not lazy
14:25:59 <merijn> dminuoso: I just gave up on having a website! :p
14:26:02 <dminuoso> merijn: Yup.
14:26:19 <Franciman> default laziness is plain dumb, optimal evaluation is much better idea
14:26:39 <kuribas> dminuoso: you might not use haskell at all! Except for the blockchain!
14:26:41 <timCF> Franciman: just use StrictData and you will be safe in most cases
14:26:45 <merijn> Default lazy is still better than default strict
14:26:59 <maerwald> merijn: that's hard to assess
14:27:22 <Franciman> sure
14:27:26 <Franciman> default lazy on the web
14:27:30 <Franciman> so that chromium consumes 200GB
14:27:32 <Franciman> instead of 32
14:27:39 <Franciman> is awesome choice
14:27:44 <maerwald> the only real argument pro default laziness is that GHC can optimize *some* stuff better
14:27:47 <Franciman> web sucks :P
14:27:52 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
14:28:01 <maerwald> but that's a brittle argument from a language perspective
14:28:04 <merijn> maerwald: I have a better argument
14:28:18 <merijn> maerwald: "too lazy" can always be solved locally. "too strict" cannot
14:28:21 trcc_ joins (~trcc@eduroam09.au.dk)
14:28:26 × trcc_ quits (~trcc@eduroam09.au.dk) (Remote host closed the connection)
14:28:29 <Franciman> I am speaking about web dev
14:28:35 <maerwald> merijn: well, that's not true... I have a complicated example where that didn't work
14:28:38 <merijn> Therefore it's easier to obtain the desired semantics by having default lazy
14:28:43 <maerwald> but it's proprietary code
14:28:44 <dminuoso> Third opinion: Both suck, a lazy-polymorphic like levity would be ideal.
14:28:51 <dminuoso> Let the user pick what they want.
14:28:53 <merijn> dminuoso: Yes, that's what I want
14:29:04 <merijn> dminuoso: And well get started on, as soon as someone will pay me :p
14:29:17 <Franciman> I also don't understand why you have to pick between a totally wrong solution (laziness) and a totally incorrect approximation (strictness)
14:29:18 <merijn> dminuoso: Together with proper, pure, exceptions
14:29:21 <Franciman> when you can choose optimal evaluation
14:29:25 <maerwald> the final value was forced, but there was a huge intermediate thunk buildup, which caused immense performance regression in a hot loop... forcing the final value doesn't help you at all
14:30:06 <maerwald> so we had to go through the entire codebase and identify the issues... most of them were in data constructors
14:30:32 <maerwald> that's why some people say laziness is global state
14:30:45 epolanski joins (uid312403@id-312403.helmsley.irccloud.com)
14:30:54 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
14:31:15 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:31:36 × trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds)
14:31:55 <Franciman> laziness is a bit of cargo cult, because optimal evaluation is not industry read yet
14:32:00 <maerwald> and that issue was disrupting the business
14:32:05 <maerwald> and cost money
14:32:12 <Franciman> it's become axiomatic
14:32:17 <Franciman> either laziness or strictness
14:32:20 <Franciman> how about no?
14:32:51 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
14:32:51 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 264 seconds)
14:33:00 <maerwald> Franciman: by the time we have something better, I'll not be programming anymore :D
14:33:02 <lortabac> Franciman: I guess you answered your own question. Optimal evaluation is not production-ready yet
14:33:17 <lortabac> it's mostly a research topic AFAIK
14:33:41 <Franciman> wasn't haskell the same?
14:34:56 × CiaoSen quits (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
14:35:41 <lortabac> Franciman: yes, it took a long time to make laziness even remotely usable
14:35:53 <merijn> Not really, there were a bunch of lazy languages. Haskell exists so that people could focus their work on one language instead of reinventing the wheel every time
14:35:55 <lortabac> the first IO system in Haskell was not very ergonomic
14:36:16 <Franciman> merijn: not really to what?
14:36:20 <lortabac> merijn: did those languages have a usable IO system?
14:36:30 <Franciman> not really to not being cargo cult of laziness?
14:36:31 <merijn> lortabac: Some, ys
14:36:42 <Franciman> laziness as the only truth?
14:37:16 <merijn> Franciman: That Haskell wasn't the only lazy language
14:37:23 <Franciman> lol
14:37:25 <Franciman> ok
14:37:47 <merijn> The Haskell committee was *explicitly* formed to unify efforts in several lazy languages
14:37:57 <Franciman> btw, I think that we could benefit from some easy tutorials on the internal STG machine
14:38:00 <merijn> The first Haskell compiler was implemented in Lazy ML
14:38:10 <merijn> So, obviously Haskell wasn't the first lazy language
14:38:13 <Franciman> so that people get more sense of how laziness works
14:38:13 <dminuoso> How can I easily share a bunch of common dependencies at preset verious in multiple components in a cabal file?
14:38:17 <Franciman> instead of pretending haskell is magic
14:38:21 <merijn> dminuoso: common block
14:38:39 <lortabac> merijn: do you know another sane IO mechanism before monads?
14:38:40 <Franciman> do we have, as a community good tutorials on STG machine?
14:38:40 <merijn> dminuoso: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/benchmark-analysis.cabal#L34-L62
14:38:51 <merijn> lortabac: Uniqueness types
14:38:53 <merijn> lortabac: See Clean
14:38:56 <dminuoso> merijn: Spot on, thanks!
14:39:10 <merijn> dminuoso: You can even import multiple common blocks into one component to compose them
14:39:31 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds)
14:39:41 <maerwald> Franciman: I hate having to know internals of the compiler to understand how a language works (and behaves, operationally). The more important compiler knowledge becomes, the more broken I consider the language.
14:40:03 <maerwald> which means C++ is utterly broken
14:40:05 <Franciman> eh but then how do you understand haskell's computational model?
14:40:08 <Franciman> if you want to optimize
14:40:21 <Franciman> laziness is hard because you can't reason about it
14:40:23 <Franciman> easily
14:43:12 <Franciman> laziness requires graphs
14:43:17 <Franciman> strictness is about trees
14:43:33 <Franciman> I personally work better on trees, but just because I am more used to them
14:43:43 Sgeo joins (~Sgeo@user/sgeo)
14:43:53 <Franciman> if you teach me how laziness computationally behaves, I think I can understand haskell's computational model better
14:44:01 <Franciman> and fix laziness bugs earlier
14:44:05 × nisstyre quits (~wes@li798-187.members.linode.com) (Changing host)
14:44:05 nisstyre joins (~wes@user/nisstyre)
14:45:24 <Franciman> imho laziness is the best default when you are coding on paper and don't expect your code to run anywhere
14:45:40 <Franciman> otherwise you also need to, some extent, understand the computational model of the machine
14:45:58 <Franciman> hence, if you are so fond of retaining laziness, you need a way to understand how the code runs
14:46:20 <maerwald> Franciman: that's a moving target
14:46:40 <maerwald> inlining behavior etc changes a LOT between GHC versions
14:48:23 <Franciman> then we are doomed
14:48:25 <Franciman> whant can I say
14:48:28 <Franciman> what*
14:48:34 <Franciman> I thought haskell standard gave a semantics
14:48:42 <Franciman> I understand that ghc can have its quircks
14:48:50 <Franciman> but if they compose the 98% of the semantics of haskell
14:48:52 <Franciman> we are doomed
14:48:56 <Franciman> you can't reason about anything
14:49:35 <dminuoso> You need to understand how the code runs irrspective of the language if you want performing code. And the reality is, you're going to be sad if you write code with the assumption of an implementation.
14:49:53 <dminuoso> v8 made a major reengineering, which caused a massive performance degradation of thousands of JS packages
14:50:06 <lortabac> I found this tool very interesting for GHC, I haven't tried it yet though: https://youtu.be/I4lnCG18TaY
14:54:32 <Franciman> dminuoso: ok, but I don't have a freaking clue about what happens in my code
14:54:40 <Franciman> I can only use a very abstract substitution based semantics
14:54:42 <Franciman> to understand what happens
14:54:53 <Franciman> it's hard to understand laziness
14:55:00 Lycurgus joins (~juan@98.4.112.204)
14:55:01 <Franciman> that's why I said, probably we need to know better how ghc works
14:55:14 <Franciman> if the behaviour of haskell changes 98% at every ghc version
14:55:17 <Franciman> then that's a problem
14:55:36 <Franciman> but if there is a core semantics, that mostly gets you an idea, that's a better approximation of saying
14:55:37 <maerwald> performance properties, not behaviour
14:55:37 lavaman joins (~lavaman@98.38.249.169)
14:55:39 <Franciman> uhm laziness magic!
14:56:04 <Franciman> if we want the cargo cult of laziness as the ultimate magic you don't have to think about
14:56:06 <Franciman> then ok
14:56:16 × acidjnk quits (~acidjnk@p200300d0c7271e45b900d7f27b1ad71c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
14:56:24 <Franciman> but in practice i found myself wanting to understand what was going on
14:57:35 <Franciman> imagine C++ with default lazy semantics
14:57:43 <Franciman> that would be a nightmare
14:57:45 benin6 joins (~benin@183.82.178.244)
14:58:30 <Lycurgus> that's just like ur opinion man
14:59:36 <Lycurgus> also a lot of people here think c/c++ are a nightmare regardless
14:59:54 × benin quits (~benin@183.82.178.244) (Ping timeout: 268 seconds)
14:59:55 benin6 is now known as benin
15:00:08 zincy_ joins (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47)
15:00:09 <Franciman> now imagine mutable state + laziness
15:00:20 <Franciman> + c++ quirks
15:00:27 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
15:01:26 <Lycurgus> a minority prolly recognize it as the defacto universal machine lang of this time
15:02:23 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
15:04:01 <Lycurgus> ghc changing 98% even at every leading number change prolly wouldn work and i'm reasonably confident isn't in fact the case
15:04:42 <Lycurgus> although it's rate of mutation is different than other comparable langs
15:05:21 <Lycurgus> that would be like a complete rewrite on every major release
15:05:56 <Lycurgus> 98% of something out the end of the thing maybe
15:06:03 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
15:08:17 × zincy_ quits (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection)
15:08:44 <Lycurgus> *its rate
15:11:06 <Franciman> Lycurgus: what I mean is probably best expressed by this meme
15:11:20 <Franciman> this channel: laziness is godsent and is incredibly awesome for reasoning about code
15:11:26 <Franciman> real world: *screams in all directions*
15:11:34 <Franciman> so I suggested
15:11:39 <Franciman> well I don't usggest
15:11:49 <Lycurgus> turning it off?
15:11:57 <Franciman> I suppose that if one learns a bit more about the internals of how laziness is used
15:12:02 <Franciman> and executed
15:12:05 <Franciman> i.e. the STG machine
15:12:09 <Franciman> the screams get reduced
15:13:41 <Lycurgus> telling a lisp audience that laziness sucks is like telling romance lang speakers their lang is effeminate or germans theirs is brutish
15:13:51 <Lycurgus> *haskell audience
15:14:42 <Franciman> I am not saying it sucks
15:14:44 <Franciman> holy hell
15:15:18 <lortabac> Lycurgus: they can say anything they want about my language, it's not me who invented it, I'm just a user :P
15:15:25 × alzgh quits (alzgh@user/alzgh) (Remote host closed the connection)
15:15:39 <lortabac> (I mean natural language)
15:15:45 alzgh joins (alzgh@user/alzgh)
15:15:53 <Franciman> Lycurgus: I just said, maybe problems with laziness can be more easy to solve if we all learn about STG machine
15:15:57 <Lycurgus> it's all perspective, a boon in the right mindset
15:16:16 <geekosaur> not sure "the STG machine" is the right target here, either. STG is a way to efficiently do graph reduction. https://en.wikipedia.org/wiki/Graph_reduction may be more helpful
15:16:22 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
15:16:38 <Franciman> I also said that I don't like the dychotomy `default laziness is of course better than strictness by default'
15:16:43 <Franciman> because you have other solutions
15:16:52 <geekosaur> that is, if you look for the details on STG you will find a lot of stuff on implementing it on hardware
15:17:12 <geekosaur> because STG is about doing graph reduction on real hardware
15:17:14 <Lycurgus> i don't wanna know about STG machine, just wanna be able to turn it off if it causes a problem I don't have time to fix right now
15:18:34 <Lycurgus> in general I don't wanna know about anything internal any deeper than TH
15:18:51 <geekosaur> and there is -XStrictData for that
15:19:03 <Franciman> how often do you use it?
15:19:11 <Franciman> rarely?
15:19:20 <Lycurgus> i think people use it all the time
15:19:25 <geekosaur> (-XStrict generally goes too far, you'd have to replace the Prelude and nobody has written a strict Prelude replacement yet)
15:20:05 <maerwald> XStrict is also odd, I think it also depends on how you write down your functions
15:20:09 <Franciman> it's been shown by maerwald that -XStrict can become dodgy
15:20:14 <Franciman> oh well
15:20:33 <maerwald> afair `foo x = id x` is not the same as `foo = id` under XStrict
15:20:51 <merijn> Lycurgus: I'm pretty confident that the people using StrictData are the *vast* minority on hackage
15:21:10 <Lycurgus> merijn, ack
15:21:28 pfurla joins (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a)
15:21:30 <lortabac> merijn: I have worked in 3 different teams, and all of them had StrictData enabled at project-level
15:22:44 <geekosaur> #ghc also strongly suggests that -XStrictData is pretty common in larger environments
15:22:59 <lortabac> it's recommended by some popular blog post
15:23:00 <Hecate> yeah, we do so in my team as well
15:23:02 <Hecate> hi lortabac o/ :)
15:23:15 <lortabac> Hecate: hello :)
15:23:31 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
15:23:31 <merijn> lortabac: There's lots of popular blog posts that aren't necessarily, correct, though :p
15:23:47 <merijn> tbh, StrictData project wide seems like a "Go-lang" solution
15:23:57 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
15:25:02 <merijn> In the "we can't be arsed or don't trust our juniors to be trained adequately to think about what they're doing, so we just settle for a predictable/plannable form of mediocre"-sense
15:25:16 <merijn> There's certainly a business argument for that
15:26:12 <maerwald> nonsense... the cases where you really need lazy data constructors isn't hard to figure out
15:26:15 <merijn> But I don't like it
15:26:56 <Franciman> good
15:27:16 <maerwald> StrictData isn't enabled to make juniors more comfortable
15:27:48 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
15:27:53 learner-monad joins (~ehanneken@user/learner-monad)
15:28:23 hololeap joins (~hololeap@user/hololeap)
15:28:23 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
15:28:57 <maerwald> it's also enabled in network packages like warp... and Kazu isn't a junior
15:29:37 <maerwald> https://github.com/yesodweb/wai/pull/752#issuecomment-501531386
15:30:58 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
15:34:43 × learner-monad quits (~ehanneken@user/learner-monad) (Quit: WeeChat 3.3)
15:39:06 × jippiedoe quits (~david@2a02-a44c-e14e-1-c482-95c0-575a-83bc.fixed6.kpn.net) (Ping timeout: 245 seconds)
15:41:06 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
15:43:57 × Kaiepi quits (~Kaiepi@156.34.44.192) (Ping timeout: 250 seconds)
15:51:31 learner-monad joins (~ehanneken@user/learner-monad)
15:55:12 <vaibhavsagar[m]> we use -XStrict and -XStrictData in my work codebase
15:55:32 lavaman joins (~lavaman@98.38.249.169)
15:56:55 <vaibhavsagar[m]> it's comforting to know other people do it too
15:58:19 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
15:58:36 <Hecate> :)
15:59:43 <Hecate> < merijn> tbh, StrictData project wide seems like a "Go-lang" solution // These are strong words from someone who doesn't do it :P
15:59:56 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
16:00:08 <merijn> Hecate: How so?
16:02:17 <Hecate> well, instead of being interested by the phenomenon and asking people *who actually do it at work all day long*, you go for statements like "Go-lang solution", "plannable form of mediocre", "we can't be arsed or don't trust our juniors"
16:02:40 <Hecate> and the only valid argument that you allow is a business one even though you say that you dislike it
16:03:21 <Hecate> Would you allow a valid technical argument for StrictData or shall I give the email of my senior colleagues so you can insult them directly? :)
16:04:37 <hippoid> yeah, give us the emails
16:04:53 jippiedoe joins (~david@2a02-a44c-e14e-1-2aad-d997-6734-70a6.fixed6.kpn.net)
16:05:10 <merijn> Hecate: I prefer to only insult vague unspecified groups of people who disagree with me, because that makes it easier to have plausible deniability of my opinion of any actual specific person :p
16:05:21 <Hecate> hahahaha
16:05:39 <merijn> Because it turns out insulting individuals makes it really hard to work with them, even if you're right >.>
16:05:56 <Hecate> no fucking shit
16:05:59 <Hecate> :p
16:07:02 <merijn> Hecate: In general, the technical arguments I've seen so far don't convince me. Now, maybe I've only seen terrible technical arguments (not unlikely). I could be convinced with proper empirical science, but let's be real the state of "proper" empirical science when it comes to things as "programming language usage" is so abysmal it might as well not exist
16:09:15 deni_ is now known as deni
16:10:02 <merijn> Besides, I don't expect anyone who likes StrictData to care about my opinion on it
16:10:13 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds)
16:10:25 × kayvank quits (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
16:10:46 × xsperry quits (~xs@user/xsperry) (Ping timeout: 245 seconds)
16:12:17 <merijn> Hecate: The main technical arguments I've seen presented in favour of it have been, essentially, "I hate having to think whether this data should be strict". Which I just haven't found to be such a huge issue, so I'm curious what the technical argument of your colleagues is if it isn't that
16:13:44 xsperry joins (~xs@user/xsperry)
16:15:30 puke joins (~puke@user/puke)
16:18:58 <Hecate> merijn: because we have 150k LOC in our project and 8 years of production experience that tell us that it is the best course of action
16:18:59 <sclv> i don't think there's technical arguments because in both cases you have control over strictness, and the only question is what the better default is
16:19:09 <Hecate> ^ +1
16:21:29 <merijn> sclv: Right, which given my previous defense of laziness means I dislike StrictData
16:22:13 nuh^ joins (~nuh@68.101.63.101)
16:22:15 sajith_ is now known as sajith
16:22:19 <sclv> in my experience, it depends on what data structures you're defining. for our autogenerated Big Records that match up to other stuff going over the wire, strict by default is right
16:22:33 <sclv> for our embedded ASTs, strict by default is wrong
16:22:39 mmhat joins (~mmh@55d44c37.access.ecotel.net)
16:22:48 <merijn> Basically, there seems to have been a big influx of people into Haskell that seem like what they *really* want is SML. And it's kinda weird that they then keep complaining about Haskell all the time, instead of just, like, writing SML or Ocaml?
16:23:09 <sclv> (i should add: strict and unpacked for those records!)
16:23:12 <merijn> Like, it's fine to not like laziness
16:23:28 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:23:31 <merijn> But why you gotta keep complaining about it in Haskell discussions?
16:24:18 <merijn> Ask Lennart for the mail addresses of SBC lawyers and complain at them to open source Mu instead or something >.>
16:24:25 <sclv> i don't find strict data helps much with thunk leaks -- that's about writing code carefully. i do find it helps when pared with unpacking for controlling memory usage in certain specialized situations
16:24:36 <merijn> Maybe legal will agree if they get annoyed too much
16:26:05 <merijn> sclv: I mean, the big record case also seems fairly obvious, so I fail to see how "project wide StrictData" improves that situation.
16:26:35 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
16:26:44 <sclv> not projectwide -- modulewide. easier to stick a pragma on top than clutter each field quite as much
16:26:55 <merijn> The weirdest thing to me is people arguing "oh, but I can still make things lazy!". Ok, but then you still gotta think about what you're doing and then there's literally no benefit from StrictData except maybe "less annotations if you've got a lot of strictness"
16:27:02 <merijn> sclv: Right, but nobody ever argues that
16:27:16 <sclv> i do :-P
16:27:17 <merijn> sclv: See in the previous discussion everyone talking about enabling it project wide
16:28:24 <merijn> All the pro-StrictData discourse presents it as a magical bullet that solves all your laziness problems. Which just strikes as a weird ass position to take
16:28:36 <maerwald> no one said that
16:28:59 <merijn> maerwald: Lots of people say that on Twitter/issue trackers/what not
16:29:02 <sclv> i do agree that there's been some overhype of it
16:29:04 <c_wraith> every time I say "I write code that uses laziness and I would appreciate it if you didn't break it" I get told I'm doing it wrong
16:29:14 <sclv> there's a time and place for it, and we learned it wasn't as magic as we thought
16:29:32 <sclv> like there was an experimental "strict everything" pragma too iirc and it just turned out... not that helpful
16:29:48 <c_wraith> yeah, so that crowd is going to be all-in on UnliftedDataTypes soon
16:29:55 <c_wraith> only making things worse
16:30:27 fef joins (~thedawn@user/thedawn)
16:30:48 <sclv> i mean performance is really 90% "find the tight inner loop" and 10% "do terrible things to that inner loop alone"
16:30:50 <EvanR> nothing makes laziness more confusing than unexpected strictness xD
16:30:54 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
16:30:54 allbery_b joins (~geekosaur@xmonad/geekosaur)
16:30:57 allbery_b is now known as geekosaur
16:31:23 <merijn> anyway
16:31:34 <merijn> I gotta go dancing instead of arguing why people are wrong on the internet
16:31:49 <maerwald> EvanR: yeah, like the `tar` package abusing lazy bytestring in ways that forces the entire file contents into memory
16:31:55 <merijn> Before everything gets locked down again until, like, 2024 or something >.>
16:32:25 <maralorn> I can contribute that I have been bitten by thinking StrictData works that way. I have a huge record, which really should be strict. But most fields are Maybes and Sets and when I disabled StrictData I wasn‘t knowledgable enough to realize how little this helps me.
16:32:29 <int-e> Why does the search term "thunk cost fallacy" produce hits that have nothing to do with laziness, sad :P
16:33:06 <lortabac> :D
16:33:06 <sclv> lmao
16:33:26 cfricke joins (~cfricke@user/cfricke)
16:33:31 neurocyte0132889 joins (~neurocyte@45.10.60.180)
16:33:31 × neurocyte0132889 quits (~neurocyte@45.10.60.180) (Changing host)
16:33:31 neurocyte0132889 joins (~neurocyte@user/neurocyte)
16:33:46 <[exa]> int-e: maybe there's no fallacy! :D
16:34:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: leaving)
16:34:28 × cfricke quits (~cfricke@user/cfricke) (Client Quit)
16:35:08 <[exa]> Hecate: sitting on 150kloc in haskell is one way to produce bias, honestly
16:35:21 <int-e> [exa]: Tbf I'm not quite sure what that would be... but it could be a nice pun.
16:39:27 <int-e> Maybe one should argue this way... Haskell is lazy by default... but that default can be changed with a pragma. So what that really means is that now there's another bit of information I need to track when reading code. :-/
16:39:46 <dsal> I'm surprised again to not find an Alternative instance for Either. I feel like that surprises me a lot.
16:40:04 gustik joins (~gustik@2a01:c844:240a:de20:3606:7339:bc88:b5f5)
16:40:09 <geekosaur> I feel like that's expected after Error went away?
16:40:59 <dsal> I continue to not expect it. :)
16:41:05 <[exa]> dsal: you may want Validation
16:41:15 × DNH quits (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:41:21 <lortabac> dsal: what would 'empty' be for Either a?
16:41:40 <lortabac> anyway, there is Alt in semigroupoids
16:41:47 <dsal> Oh, I remember Alt.
16:42:41 cfricke joins (~cfricke@user/cfricke)
16:42:42 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
16:43:30 <int-e> dsal: I guess this happens because there are several equally plausible instances.
16:44:00 <dsal> Yeah, I assume that's the case. It should just default to whatever I'm thinking is a good idea at the moment.
16:44:12 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
16:44:49 <c_wraith> that'd be the worst. someone else looks at your code and your already-compiled program changes behavior.
16:44:50 <int-e> dsal: So, it should roll a die at compile time and synthesize one of the instances accordingly?
16:44:51 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
16:45:01 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
16:45:23 <dsal> I'm back into arguing that deeply nesting case statements isn't a good idea. Alt makes a lot of sense for this type of use case.
16:45:25 <int-e> (we need more random compiler errors (cf. INTERCAL))
16:46:14 <monochrom> I support enforcing UB by runtime randomization too >:)
16:46:14 <int-e> dsal: maybe whoever you're arguing with isn't worth arguing with
16:47:06 <dsal> At least it's a softer argument: "I really don't see the issue with code going to the right"
16:47:21 <dsal> The last time it was that test code doesn't have to look like production code. Now it's actually production code. :/
16:47:32 <monochrom> haha
16:47:41 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:7c6d:4c33:f4a3:2a22) (Quit: WeeChat 2.8)
16:47:51 <int-e> . o O ( 32:9 monitors for all programmers now! )
16:47:59 <c_wraith> I agree that you should keep nested cases to less than 10 levels of nesting
16:48:13 <int-e> (this ultra-wide monitor trend is weird)
16:48:15 <monochrom> I think 32:9 is already realized as "dual head"
16:48:26 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
16:48:30 <int-e> monochrom: you can now get it as a single monitor
16:48:33 <[exa]> dsal: what's wrong with just putting First in Validation tho? :D
16:48:41 <monochrom> Yikes.
16:48:44 <dsal> It's also ormolu, so each line only has like one word and there's two space indentation.
16:49:07 <c_wraith> Ormolu is its own set of bad choices...
16:49:30 <monochrom> ormolu helps you make your code look like Sheet Music Boss youtube videos >:)
16:53:16 <monochrom> Back in the good old days, I heard this probably wise thought: If you compose a face from the most beautiful eyes, the most beautiful nose, the most beautiful mouth, ... the face can be the most ugly.
16:53:32 <Hecate> int-e: +1 for "thunk cost fallacy", love it
16:54:03 <monochrom> Then, around the turn of the century, someone actually did that for programming practices, called it "extreme programming".
16:54:10 <Hecate> [exa]: well, it's not my first Haskell rodeo, and we have people working on the performance of our monolith, it's not something that came yesterday :P
16:54:14 <monochrom> perhaps s/for/to/
16:54:36 <monochrom> And now, someone does that to code layout, calls it "ormulu".
16:54:50 <dsal> What is "thunk cost fallacy?"
16:55:04 <EvanR> a play on words
16:55:12 <dsal> Sure, but I mean what's the context?
16:55:34 <dsal> There's a lot of cargo culting around strict fields in areas like the one thing we look at the one time at startup before copying it to something else.
16:55:36 <monochrom> unexpected laziness and unexpected strictness
16:56:21 <monochrom> and presuming that laziness hurts, strictness helps, blindly unconditionally
16:56:28 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
16:56:37 <dsal> Also: That it matters at all, which is the thing I keep running into.
16:56:46 <monochrom> Yeah, that too.
16:57:00 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
16:57:03 <monochrom> premature optimization again
16:57:25 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
16:57:54 <davean> Its not even an optimization
16:57:58 <dsal> Why are all these types boxed? Unboxed is even more strict!
16:58:35 <EvanR> unboxed linked list when
16:58:37 renzhi joins (~xp@2607:fa49:6500:b100::6e7f)
16:59:04 <monochrom> Why is the unboxing day called the boxing day? >:)
16:59:39 <EvanR> the phenomenon of unboxing needs a less negative word
16:59:54 <EvanR> not sure what
17:00:37 ec joins (~ec@gateway/tor-sasl/ec)
17:01:00 <c_wraith> boxing day is usually the day after unboxing day. Not that I know why
17:01:07 <c_wraith> that seems to violate causality
17:01:11 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds)
17:01:13 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:04:39 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
17:04:55 DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
17:05:42 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
17:05:54 nschoe joins (~quassel@178.251.84.79)
17:13:07 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
17:16:11 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
17:18:50 <int-e> dsal: I'm not sure yet... but something like the idea that thunks are expensive and therefore you should avoid them all by making everything strict.
17:19:25 <dsal> That's what it sounded like. I think it'd be a great blog post with the three main case: True, False, Stop wasting your time.
17:21:21 × mbuf quits (~Shakthi@223.178.114.167) (Quit: Leaving)
17:21:29 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
17:24:21 × hueso quits (~root@user/hueso) (Quit: hueso)
17:25:02 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
17:25:53 kuribas parts (~user@ptr-25vy0i9f20n8puprvgm.18120a2.ip6.access.telenet.be) (ERC (IRC client for Emacs 26.3))
17:28:39 × benin quits (~benin@183.82.178.244) (Ping timeout: 264 seconds)
17:29:01 hueso joins (~root@user/hueso)
17:29:27 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
17:32:16 <EvanR> True, False, FileNotFound
17:32:47 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
17:38:02 benin joins (~benin@183.82.178.244)
17:46:03 × benin quits (~benin@183.82.178.244) (Ping timeout: 264 seconds)
17:47:01 lavaman joins (~lavaman@98.38.249.169)
17:48:08 burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk)
17:48:57 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 250 seconds)
17:52:51 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds)
17:54:27 × ph88 quits (~ph88@95.90.240.104) (Ping timeout: 264 seconds)
17:54:31 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
17:54:56 <nf> int-e: how do i allow my own instance of lambdabot to import Control.Lens? should i add lens to trustedPackages? is that safe?
17:56:44 waleee joins (~waleee@h-82-196-111-63.NA.cust.bahnhof.se)
17:56:57 <int-e> nf: Yes you need to trust lens to allow that. Is it safe? I don't know. Last I checked it looked like the worst thing it does is open access to `coerce`. But its huge and it's easy to miss something.
17:58:38 <dsal> lens is bad because you can magnify things and start fires.
17:58:43 <int-e> (Data.Coerce is unsafe... and indeed it was initially riddled with various type checking problems that allowed people to write `unsafeCoerce`. But I think they've been addressed.
17:58:50 <int-e> )
17:58:58 <dsal> Data.Coerce is unsafe?
17:59:00 <int-e> sorry, "is unsafe" meaning it's declared as unsafe.
17:59:18 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
17:59:21 <nf> by safety i really mean unability to run arbitrary IO
17:59:31 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:59:37 <nf> that shouldn't be a problem, right?
17:59:57 <int-e> https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/base/Data/Coerce.hs#L1
18:00:19 <dsal> Lame
18:00:20 <int-e> nf: It *should*, yes.
18:00:33 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
18:02:34 nvmd joins (~nvmd@user/nvmd)
18:02:56 <nf> hm, i'm still getting "Control.Lens: Can't be safely imported! The module itself isn't safe."
18:03:19 econo joins (uid147250@user/econo)
18:03:26 <int-e> you need to trust some of lens's dependencies too; profunctors in particular.
18:04:03 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
18:04:12 <int-e> wait
18:04:28 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
18:04:36 cheater joins (~Username@user/cheater)
18:04:48 <int-e> That actually sounds like safety support in Lens may have bitrotted a bit.
18:05:08 <nf> still not
18:05:31 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
18:06:48 <int-e> (this lambdabot is on lens-4.19.2, I have not tried lens-5.x)
18:06:54 × alx741 quits (~alx741@186.178.108.219) (Ping timeout: 260 seconds)
18:08:37 <int-e> anyway, I usually try these things out with ghci -XSafe (invoking mueval directly is also an option, but lambdabot's truncated error messages aren't helpful for tracking these things down)
18:09:51 <nf> how can i know which module is causing the unsafeness with ghci?
18:09:59 <int-e> huh, actually 4.19.2 seems to require a patch too: https://github.com/lambdabot/lambdabot/blob/libera/patches/lens-4.19.2.patch
18:11:20 <nf> :/
18:11:29 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
18:11:52 <int-e> nf: well it alrady told you that Control.Lens isn't safe. Since Control.Lens isn't marked as Trustworthy, that is an inferred property. So you can import the modules it depends on to narrow things down.
18:12:17 <nf> i see
18:12:27 <int-e> It's no fun... there's no tooling (beyond ghci) around SafeHaskell as far as I know.
18:12:45 <nf> disclaimer i have no idea what Trustworthy or even Safe mean
18:13:37 <int-e> "Trustworthy" is how you override the inferred unsafety of a module: if the user trusts the package that contains a Trustworthy module, then that module can be imported from Safe modules.
18:14:37 <int-e> So... "inferred safe" basically means that all imports are Safe or trusted and Trustworthy.
18:14:57 <nf> ok
18:16:11 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
18:16:30 xkuru joins (~xkuru@user/xkuru)
18:16:42 × DNH quits (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:17:01 <int-e> nf: Huh, apparently profunctors doesn't need to be trusted anymore. https://github.com/lambdabot/lambdabot/blob/libera/lambdabot/scripts/online/run.sh#L4-L15 is what lambdabot uses (with lens-4.19.2 plus the above patch)
18:17:16 DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
18:19:04 <nf> thanks
18:20:39 <nf> so apparently Control.Lens.Equality imports GHC.Exts which is unsafe
18:21:13 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
18:21:26 <nf> right, this is what your patch is about
18:21:45 × pfurla quits (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…)
18:21:46 <nf> should that patch be upstreamed maybe?
18:22:03 × nschoe quits (~quassel@178.251.84.79) (Ping timeout: 264 seconds)
18:22:16 <int-e> undoubtedly
18:22:25 <int-e> I'd do it to if I wasn't so great at procrastination
18:22:27 <nf> oh https://github.com/ekmett/lens/blob/master/src/Control/Lens/Equality.hs#L7
18:22:42 <nf> you did it 2 years ago lmao
18:22:47 <int-e> Ah.
18:22:57 <nf> more like precrastination
18:23:13 <int-e> well, one year ago
18:23:14 mvk joins (~mvk@2607:fea8:5cc1:fa00::4702)
18:23:40 <int-e> Let's meet in the middle, 1 1/2.
18:23:47 <nf> right
18:24:03 <nf> anyway, that's in v5 and i just realised i'm also on 4.19.2
18:24:25 <nf> i think i will figure this out now
18:24:27 <nf> thanks for your help
18:25:50 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
18:31:47 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
18:31:55 gdown joins (~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net)
18:32:23 pavonia joins (~user@user/siracusa)
18:34:25 <nf> it works with 5.0.1 :)
18:34:28 deadmarshal joins (~deadmarsh@95.38.230.45)
18:39:06 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
18:40:05 cosimone` joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
18:41:42 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Read error: Connection reset by peer)
18:41:51 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
18:42:15 × jippiedoe quits (~david@2a02-a44c-e14e-1-2aad-d997-6734-70a6.fixed6.kpn.net) (Ping timeout: 250 seconds)
18:43:24 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
18:46:11 benin joins (~benin@183.82.179.164)
18:48:45 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
18:49:19 alx741 joins (~alx741@186.178.108.219)
18:51:36 × cosimone` quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds)
18:52:51 <dsal> Does `T {..}` look better than `T{..}` to people? That space always looks weird to me.
18:53:42 <nf> definitely looks better
18:54:09 <EvanR> T <backspace> { double strike would save space and still be recognizable xD
18:55:37 <geekosaur> narrow space? :þ
18:59:15 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
19:01:00 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
19:01:30 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
19:04:05 <dsal> nf: space looks better you say?
19:04:24 <dsal> It's not the space savings, it's' just that it ends up looking like a distinct argument.
19:05:01 <EvanR> T {..} looks like application, T{..} looks like an atomic piece of syntax
19:05:03 <dsal> So my brain has to compensate and think "no wait, this is part of the previous argument, it's just got a space in the middle for some reason"
19:05:32 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 240 seconds)
19:06:03 nschoe joins (~quassel@2a01:e0a:8e:a190:c8ff:e615:b6b0:62dc)
19:06:03 × nschoe quits (~quassel@2a01:e0a:8e:a190:c8ff:e615:b6b0:62dc) (Client Quit)
19:06:08 raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:06:22 <monochrom> "T {..}" has the benefit of being consistent with "Just 5".
19:06:49 <monochrom> "T{..}" has the benefit of following the Python style guide that you don't need a space here.
19:06:57 <dsal> But you can't write `f Just 5 = ...`
19:08:24 <EvanR> record syntax shouldn't be confused for application
19:08:51 <EvanR> it's hard enough to get people on board with f x xD
19:09:07 <monochrom> That is orthogonal to coding style, IMO.
19:09:10 <int-e> nf: good to know ("works with 5.0.1")
19:09:22 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:09:26 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds)
19:10:00 <dsal> It doesn't *really* matter, as ormolu's gonna ormolu. I'm just surprised that it looks clear to people.
19:10:06 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
19:10:43 <dsal> Speaking of things that look clear to people, inline per-character color coded diffs of expected vs. got output are hilarious.
19:15:57 <tomsmeding> % import Control.Concurrent
19:15:57 <yahb> tomsmeding:
19:15:59 <tomsmeding> % forkIO (putStrLn "hello") >> forkIO (putStrLn "goodbye")
19:15:59 <yahb> tomsmeding: ThhgreoeloalddobI; yde ; 95
19:16:05 <tomsmeding> dsal: does it look like that?
19:16:12 <dsal> Yes, but in color!
19:16:26 <dsal> I can kind of read it when I try hard.
19:16:34 <tomsmeding> beautiful
19:16:45 <dsal> It's beginning to look a lot like Christmas.
19:16:55 <tomsmeding> maybe there's a reason then
19:17:09 dsal wages war on Christmas
19:17:30 <tomsmeding> with ghc?
19:18:09 <dsal> This is someone's test framework thing.
19:18:23 <dsal> But I do have a ghc problem. The line editing stuff is completely wrecked.
19:18:32 <dsal> Has anyone heard of completely wrecked line editing stuff in ghc?
19:19:09 <dsal> er ghci
19:19:39 × raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
19:19:41 <tomsmeding> I've had it before, and I vaguely recall it having to do with changing the window size and then editing a multiline command
19:19:54 <xerox> dsal: what os and versuon
19:20:14 <geekosaur> there was also a report of it being broken in 9.0.1 on arm, iirc
19:20:15 <xerox> that's what I get for trying to type with gloves on
19:20:36 <geekosaur> which is probably what xerox is asking about :þ
19:20:44 <dsal> Yeah, it's that one.
19:20:47 <xerox> yep! that one has been solved! :-)
19:21:00 <xerox> an ffi mismatch with made wrong ioctls
19:21:02 <dsal> Oh cool. Actually, this one is 8.10.7
19:21:29 <xerox> if you want a workaround you can do "TERM=dumb ghci"
19:21:37 raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:21:45 <xerox> till you get a fixed version
19:21:54 <dsal> I don't want dumb ghci :(
19:22:05 <dsal> dsmac:tesla dustin$ TERM=dumb stack ghci
19:22:05 <dsal> Segmentation fault: 11
19:22:08 <dsal> Oh good, I don't get one.
19:22:14 <xerox> ooops
19:22:30 <dsal> It *almost* works.
19:22:31 <tomsmeding> terminal is too smart for you, rejects being made dumb
19:22:38 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:23:42 <xerox> I ended up compiling a fixed ghc and that was that
19:23:54 pfurla joins (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a)
19:23:59 neurocyte0132889 joins (~neurocyte@user/neurocyte)
19:24:16 jippiedoe joins (~david@2a02-a44c-e14e-1-3aa6-b22c-891-c248.fixed6.kpn.net)
19:26:59 <monochrom> perhaps TERM=vt100 works a bit better
19:27:52 <awpr> I've had broken line editing in ghci resulting from using color sequences without the appropriate width annotations
19:28:05 <geekosaur> still runs into the terminal ioctls being wrong
19:28:12 <monochrom> Ah OK.
19:28:20 <awpr> does it go horribly wrong when line-wrapping a long line, and put the cursor in the wrong place?
19:28:27 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
19:28:28 <geekosaur> this is an FFI issue, the only way TERM helps is TERM=dumb prevents them from being used at all
19:29:30 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:33:27 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 264 seconds)
19:33:49 <dsal> mine goes horribly wrong whenever I edit anything. Trying to insert characters just mangles everything.
19:34:44 <xerox> do you have haskeline customizations?
19:35:07 <awpr> ok, probably a different issue then. here's a reference for the ANSI escape sequence issue I had, though: https://github.com/judah/haskeline/wiki/ControlSequencesInPrompt
19:38:48 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection)
19:39:32 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
19:41:36 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:42:01 max22- joins (~maxime@2a01cb0883359800a5783feecd0598ff.ipv6.abo.wanadoo.fr)
19:47:44 × alzgh quits (alzgh@user/alzgh) (Remote host closed the connection)
19:48:04 alzgh joins (alzgh@user/alzgh)
19:49:02 <dsal> xerox: I don't think I have anything fancy. This is the only thing that's kind of broken when I switch to the native build.
19:50:32 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:50:44 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
19:52:01 × duckonomy quits (~duckonomy@177.ip-144-217-84.net) (*.net *.split)
19:52:01 × marienz quits (~marienz@libera/staff/marienz) (*.net *.split)
19:52:01 × Inoperable quits (~PLAYER_1@fancydata.science) (*.net *.split)
19:52:01 × dkeohane2 quits (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) (*.net *.split)
19:52:13 marienz joins (~marienz@libera/staff/marienz)
19:52:32 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
19:52:40 dkeohane2 joins (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com)
19:53:21 Inoperable joins (~PLAYER_1@fancydata.science)
19:53:52 duckonomy joins (~duckonomy@177.ip-144-217-84.net)
19:57:01 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
19:58:41 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
19:59:47 × burnsidesLlama quits (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection)
20:00:18 wootehfoot joins (~wootehfoo@user/wootehfoot)
20:00:20 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
20:00:33 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
20:04:43 × pfurla quits (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…)
20:04:45 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:05:25 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
20:05:26 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 260 seconds)
20:06:00 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
20:06:22 hololeap joins (~hololeap@user/hololeap)
20:06:24 pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
20:06:31 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:07:06 juhp joins (~juhp@128.106.188.82)
20:11:33 deadmarshal joins (~deadmarsh@95.38.230.45)
20:12:01 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
20:12:39 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
20:13:09 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
20:13:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:15:14 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:15:25 hololeap joins (~hololeap@user/hololeap)
20:16:05 × deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 256 seconds)
20:17:47 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
20:25:30 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
20:26:06 cjb joins (~cjb@user/cjb)
20:26:31 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
20:27:03 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
20:27:37 × pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
20:28:43 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
20:31:11 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds)
20:31:27 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
20:32:21 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
20:33:27 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
20:34:31 × waleee quits (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Ping timeout: 245 seconds)
20:36:05 reumeth joins (~reumeth@user/reumeth)
20:36:27 × alx741 quits (~alx741@186.178.108.219) (Ping timeout: 264 seconds)
20:38:52 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
20:39:26 <reumeth> I'm new to Haskell trying to make a function Aeson.Value -> Aeson.Value that fuzzes JSON values. I managed to create a deterministic function of that type, but I really want the function to replace all strings with random string/int (kind of like the strings/ints QuickCheck generates)
20:40:27 <reumeth> Since I want some randomness it feels like I have to do this in IO or something? Or at least seed some generator and send it as an argument to my function?
20:40:49 hippoid_ joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
20:41:28 <geekosaur> the ideal way to use randomness is indeed you seed it in IO and pass the generator around
20:42:11 <geekosaur> System.Random has a number of functions that will help you do this, and you can pick a number of RNG backends
20:42:21 <reumeth> Is there a way to reuse the strings/ints Quickcheck generates?
20:42:25 <geekosaur> ("random" package)
20:42:46 <reumeth> geekosaur: That will only fix my random integer problem though, right?
20:43:02 <geekosaur> you can use `arbitrary` but you'll pull in QuickCheck and its dependencies and you might find that a little heavy just for `arbitrary`
20:43:15 <geekosaur> there are ways to generate random strings and such as well
20:43:16 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
20:43:42 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
20:43:50 <geekosaur> (every so often one wishes `arbitrary` were available separately from QC for things like this)
20:43:57 hololeap joins (~hololeap@user/hololeap)
20:44:04 <reumeth> geekosaur: For me that will be fine. I like the fact that QuickCheck has lots of different generator like (valid utf8 strings, random bytestrings etc)
20:44:36 [Kalisto] parts (~nico@user/kalisto/x-8968079) (The Lounge - https://thelounge.chat)
20:44:45 <reumeth> I'm just struggling to see where/how I can use the arbitrary from QC
20:45:16 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:45:36 × hippoid_ quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Client Quit)
20:45:48 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
20:46:04 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
20:46:08 HuGoDrOcHa joins (~hugodroch@179.158.241.142)
20:47:13 <reumeth> Right now my fuzz function is stupid and is of the form: fuzz (Array x) = map fuzz x; fuzz (Number x) = Number (x + 1) etc.
20:47:14 vicfred joins (~vicfred@user/vicfred)
20:47:57 <reumeth> I'm pretty sure I can't just add QC.arbitrary stuff inside here, at least the signature of fuzz will have to change, right?
20:48:45 <geekosaur> yes
20:49:06 <geekosaur> https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/Test-QuickCheck-Gen.html#t:Gen
20:49:29 <geekosaur> it's a monad, so your signature becomes Aeson.Value -> Gen Aeson.Value
20:49:47 <HuGoDrOcHa> ?
20:50:09 <geekosaur> …yes?
20:50:18 <HuGoDrOcHa> yes
20:50:23 alx741 joins (~alx741@186.178.108.244)
20:50:51 <reumeth> geekosaur: Hm, ok I'll try to see if I can get any further. Thanks
20:50:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
20:51:47 HuGoDrOcHa parts (~hugodroch@179.158.241.142) ()
20:54:06 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
20:54:31 hololeap joins (~hololeap@user/hololeap)
20:55:46 zincy_ joins (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47)
20:58:03 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
20:58:07 acidjnk joins (~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de)
20:59:31 hololeap_ joins (~hololeap@user/hololeap)
20:59:53 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
21:00:34 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
21:01:15 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
21:02:03 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
21:03:09 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:03:46 hololeap joins (~hololeap@user/hololeap)
21:04:47 × Inoperable quits (~PLAYER_1@fancydata.science) (Excess Flood)
21:05:45 × jippiedoe quits (~david@2a02-a44c-e14e-1-3aa6-b22c-891-c248.fixed6.kpn.net) (Quit: Leaving)
21:05:48 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
21:06:03 Kaiepi joins (~Kaiepi@156.34.44.192)
21:07:05 ec joins (~ec@gateway/tor-sasl/ec)
21:09:07 × blackcap quits (~blackcap@144.89-10-135.nextgentel.com) (Remote host closed the connection)
21:10:09 vysn joins (~vysn@user/vysn)
21:12:54 pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
21:14:15 Inoperable joins (~PLAYER_1@fancydata.science)
21:15:00 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
21:16:03 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
21:16:05 kupi joins (uid212005@id-212005.hampstead.irccloud.com)
21:16:22 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:18:09 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
21:19:46 ec joins (~ec@gateway/tor-sasl/ec)
21:21:06 × nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.)
21:22:07 justsomeguy joins (~justsomeg@user/justsomeguy)
21:23:30 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
21:23:36 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
21:23:47 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
21:24:08 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
21:31:03 <jle`> anyone familiar with the Cabal library? is there any -> IO PackageDescription function to get the description of the current project?
21:31:07 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:31:36 × reumeth quits (~reumeth@user/reumeth) (Ping timeout: 245 seconds)
21:32:45 <jle`> hm i guess i could use Distribution.Parsec (maybe?) but i'd still need to get the cabal file name
21:33:34 <sclv> jle`: yeah given a file there's easy functions to read the package description
21:33:58 <jle`> hm, is there a way to get the name of the current project? is that what that Paths_ module is for?
21:34:02 <sclv> but not sure what the easy function is to pick the "right" filename
21:34:47 <maerwald> https://hackage.haskell.org/package/Cabal-3.6.2.0/docs/Distribution-PackageDescription-Parsec.html#v:parseGenericPackageDescriptionMaybe
21:34:51 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
21:36:21 <jle`> whoa there's both a Distribution.PackageDescription and a Description.Types.PackageDescription, thanks for the tip
21:36:52 <jle`> hm, is the ByteString option here the contents of the file?
21:36:57 <jle`> s/option/argument
21:36:57 <sclv> yes
21:37:27 <jle`> ah, thanks
21:37:33 <jle`> hm i guess i just have to find a way to get the project name then
21:37:43 <jle`> or i guess i could glob for *.cabal
21:38:44 <maerwald> https://hackage.haskell.org/package/filepattern
21:41:10 × zincy_ quits (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection)
21:41:38 <jle`> ooh thanks :)
21:41:43 × pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
21:43:15 <jle`> and then i can use it with getDatadir
21:43:17 <sclv> the cabal logic as i understand it is it just looks for a unique file and throws if there's more than one and none is explicitly specified
21:44:51 <jle`> yeah, i meant i can use it to get the directory to search in
21:45:04 <sclv> jle`: ooh, found it! https://hackage.haskell.org/package/Cabal-3.6.2.0/docs/Distribution-Simple-Utils.html#v:defaultPackageDesc
21:45:34 <jle`> :O
21:45:51 <jle`> sweet, thanks a bunch
21:47:24 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
21:50:35 × hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
21:50:50 ec joins (~ec@gateway/tor-sasl/ec)
21:50:52 hiruji joins (~hiruji@user/hiruji)
21:51:28 pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad)
21:53:51 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
21:54:04 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
21:54:10 yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
21:55:56 <[itchyjunk]> Hi, wondering if this makes sense `if fst(divMod n 10) == 0 then snd(divMod n 10) else snd(divMod n 10)`
21:56:38 <[itchyjunk]> i know logically its not brushed up yet, just syntactically
21:57:14 <dsal> That's weird in several ways.
21:57:29 <dsal> The lack of space between the function and the parameter is super weird, let me get past that one.
21:57:40 <dsal> But then like, why are you using divMod if you just want div or mod?
21:58:13 <[itchyjunk]> i want to do mod based on the value of div but i haven't sorted that out in my head yet
21:58:46 <dsal> > let f n = let (d,m) = divMod n 10 in if d == 0 then m else m in f 11
21:58:46 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
21:58:47 <lambdabot> 1
21:58:50 × yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
21:59:41 burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk)
21:59:51 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
22:01:10 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection)
22:01:25 <monochrom> Saying "divMod n 10 Beetlejuice" 3 times in a row is a serious violation of DRY. In any language.
22:01:50 × alzgh quits (alzgh@user/alzgh) (Remote host closed the connection)
22:02:10 alzgh joins (alzgh@user/alzgh)
22:02:21 <maerwald> people still follow DRY? :p
22:02:36 <dsal> I get into arguments about repetition a lot. I *kind* of get them, but the arguments are often readability vs. building a new (local) abstraction that makes it clear that it's actually the same thing three times and not some typos or something.
22:02:47 <dsal> I slow down a lot more when I see what looks like a copy and paste.
22:02:52 <maerwald> I always start with repetition.
22:03:02 <monochrom> You know, I have long realized that if a desirable principle has a name, it means people are refusing to do it. >:)
22:03:11 <maerwald> and then after a while, an abstraction will show itself (or it doesn't)
22:03:23 <monochrom> Yes I'm OK with that.
22:03:27 <dsal> Oh sure. There's nothing wrong with repeating yourself until you realize that copying and pasting the same thing a bunch might be a pain.
22:03:38 <monochrom> But this one is way too basic.
22:04:04 <dsal> The one I just looked at was just three copies of some code and a review comment about adding a comment as to when we should add new ones. I'm like, "Hey, can we just make this a list?"
22:04:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:04:36 <monochrom> There are very obvious, staring at your face repetitions that even 1st-year students can easily recognize.
22:04:50 <dsal> One of the bits of code that was copied and pasted a lot (because that's good for tests!) needed to be updated for a change I made this morning and I figured out that the original one that got copied a lot *also* had a bug.
22:05:34 <maerwald> I've long ceased to be that invested in stuff when being paid for coding
22:05:39 <monochrom> What you're referring to are less obvious cases that really takes experience to see, and even then you can argue about pros and cons.
22:05:40 <dsal> haha
22:06:17 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:06:54 <dsal> monochrom: that's kind of the approach I'm taking. I'll probably catch flak for even spending time on this, but let me write up a big thing describing why copying and pasting this is bad and various benefits of putting stuff in a list instead of unrolling the loop in a big do block.
22:07:15 <maerwald> monochrom: many coders I've seen start thinking about the abstraction too early... when they should really just copy paste. And that leads to really shitty abstractions
22:07:32 <dsal> Yeah, I've definitely been in those code bases as well.
22:07:57 <dsal> that's part of the reason there's knee-jerk in the opposite direction here. Previous Prelude was insanely large. No idea where anything came from and all kinds of weird stuff happening.
22:08:22 <monochrom> That is caused by OOP education. Or at least bad OOP education. (Perhaps there is good OOP education too.)
22:08:36 <dsal> That's why I qualified (local) abstraction. They love naming various values with extremely long names and stuff. But then strategies just get copied and pasted.
22:09:11 <[itchyjunk]> Every second I confuse myself more.
22:09:22 <dsal> [itchyjunk]: It's called "learning"
22:09:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
22:09:27 <[itchyjunk]> lol
22:09:33 <[itchyjunk]> In that case, great!
22:09:46 <monochrom> 1st-year OOP courses, the bad ones, tend to start with "What's wrong with this struct? Person = { String name; int age; }"
22:09:51 <maerwald> Code is so unpredictable... you think up something in your head and when you try it, it turns out totally different, because of a bazillion reasons (unexpected API, bugs, corner cases).
22:09:53 <monochrom> Really, there is nothing wrong.
22:10:24 <maerwald> the crap has to settle first
22:10:42 <dsal> Yep, don't disagree.
22:10:45 <maerwald> like a dough
22:10:47 <monochrom> Then the party line reveals the model answer: "It is not hidden behind an interface. What if there are future changes? The right thing to do is getter methods."
22:11:15 <[itchyjunk]> I have a function and it does a tiny step of what i want. i want to save each of the mini results in a list. i should have a small working function then stitch it so that this another function uses this function and puts the result in a list. then have a third function that uses this whole thing multiple times?
22:11:16 <monochrom> That kind of brainwashing in 1st-year courses is why people have premature abstractions. "abstractions"
22:11:17 <dsal> "What if there are future changes" is an argument both for and against abstractions, depending on who's proposing them. :)
22:11:48 <[itchyjunk]> I am in a first year OOP course @_@
22:11:59 <maerwald> dsal: write code that's easy to delete.
22:12:11 <dsal> Yep, I love deleting code.
22:12:13 <monochrom> Really, even if there are future changes, you don't even know which direction it will be in. The expression problem implies that if you enable one, you disable the other.
22:12:43 <maerwald> yes, so better delete the previous code and start anew
22:12:50 ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net)
22:12:53 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
22:13:07 <maerwald> but people still think that starting anew is too expensive
22:13:16 <maerwald> it is if your code is hard to delete
22:13:18 <geekosaur> sunk code fallacy?
22:13:35 <dsal> I argue that fairly tall code with 8 levels of indentation in nested case blocks (with two space indentation) is kind of hard to follow and should be clearer. It's completely local, but like, I have to think too hard to follow it. Just give the structure a bit of name.
22:14:00 <monochrom> However! DRY is still a good principle, and does not conflict with what I said. I am just against premature interfaces.
22:14:40 <maerwald> monochrom: well, but dry doesn't focus on abstraction. Deduplication and abstraction is not the same
22:14:43 <dsal> I got it down to a square of around 6 levels of indentation and 6-8 lines tall with the whole thing on a page so you can see it all at once.
22:15:17 <maerwald> sometimes, when you see repetition, the abstraction is really somewhere else
22:15:50 <maerwald> but because we're educated with DRY, we focus on removing the repetition
22:20:47 <[itchyjunk]> if i have a function returning r and i do (r):[], is this list created locally within that context and lost later on?
22:21:05 <[itchyjunk]> i.e should i be `let myList = []` and using myList to hold the returns?
22:21:32 <monochrom> myList will always be [].
22:21:52 <monochrom> even s/be/stay as/
22:21:58 <monochrom> For eternity!
22:22:08 <[itchyjunk]> oh rigiht.. r:myList creates a new list with [r]
22:22:16 [itchyjunk] recursively rips hair
22:22:17 <monochrom> Yes.
22:24:05 <monochrom> This is why in my course I open with "think 'function' as in math functions, not C functions; think algebra, not control flow".
22:24:30 <[itchyjunk]> You teach haskell?
22:24:41 <jle`> oh now i have to convert Cabal's Extension type to haskell-src-ext's extension type
22:24:47 jle` . o ( read . show )
22:25:07 × michalz quits (~michalz@185.246.204.33) (Remote host closed the connection)
22:25:08 <[itchyjunk]> I thought i'd do a simple exercise to feel I have been productive. Instead i've put myself into a hole :D
22:25:30 <monochrom> And don't worry, I don't really say that thinking C functions and control flow are wrong, I just say that you'll have a better time at the beginning if you think my way. After you're experienced, it doesn't matter then.
22:26:03 <monochrom> Well, strictly speaking, I'm supposed to teach principles of programming languages. I end up doing more Haskell than I should.
22:26:07 jmorris joins (uid433911@id-433911.hampstead.irccloud.com)
22:26:22 × Alleria quits (~textual@user/alleria) (Ping timeout: 268 seconds)
22:26:46 <[itchyjunk]> I'm in a "Accelerated object oriented programming" class
22:26:49 <maerwald> interesting, I always think in control flow, no matter the language
22:26:57 <[itchyjunk]> we use java
22:27:24 × nf quits (~n@monade.li) (Quit: Fairfarren.)
22:27:32 <monochrom> And what does the unaccelerated one do?
22:28:12 nf joins (~n@monade.li)
22:28:40 <dsal> I learned Java after learning Eiffel (from Object Oriented Software Construction). Most of the important OO principles from eiffel are exactly the opposite of java best practices.
22:28:44 <[itchyjunk]> the unaccelerated one is shorter course. this one is supposidly 3 fused into one. principle of programming, intro to OOP and intro to Java
22:28:54 <maerwald> wow
22:29:04 <[itchyjunk]> i just needed the principles class but they weren't offering one so i was thrown into this one :(
22:29:07 [itchyjunk] is no programmer
22:29:22 <maerwald> learning principles of programming through java? ok.
22:29:39 <[itchyjunk]> I don't think my uni offers anything else to start off with
22:29:47 <[itchyjunk]> ive heard there are graduate level FP classes
22:29:52 <maerwald> well, you'll know what getters and setters are pretty soon
22:30:00 <[itchyjunk]> I know those!
22:30:03 <maerwald> and that's all you need to know for java
22:30:09 <[itchyjunk]> lol
22:30:12 <monochrom> haha
22:30:26 <monochrom> I can't say there is nothing else to know.
22:30:37 × chele quits (~chele@user/chele) (Remote host closed the connection)
22:30:44 <monochrom> But my students do behave like that's all they have learned. >:)
22:30:47 <dsal> You also get to learn about building factories.
22:31:09 <dsal> Anyone can construct a new object, but not just anyone can build a whole factory that constructs objects.
22:31:19 <[itchyjunk]> if i do r:[] to create [r], how to i refrence to this [r] list ?
22:31:25 <[itchyjunk]> its lost in memory somewhere?
22:31:26 <geekosaur> and then FactoryFactory, etc.
22:31:35 <dsal> [itchyjunk]: how do you want to reference it?
22:31:41 <dsal> Also, [r] is a fine way to make [r]
22:31:46 <maerwald> well, you can also learn about Java generics and then realize they're just difficult to understand implicit casts
22:31:49 <monochrom> If I provide "data X = MkX Int X" on an assignment, many of my students code up "getInt :: X -> Int" and "getNext: X -> X" right away.
22:31:59 <[itchyjunk]> i have a function doing things and i want to store the return values somewhere
22:32:07 <dsal> monochrom: They don't start writing lenses?
22:32:15 <monochrom> Nah.
22:32:28 <maerwald> xD
22:32:31 <dsal> [itchyjunk]: It's really best to start by thinking of what you want your functions to look like. Type signatures do most of the work for you when you let them.
22:32:36 <monochrom> Heh
22:33:05 <maerwald> store the return value? You could use a database
22:33:10 <maerwald> start with beam
22:33:20 <monochrom> No, use a file system... >:)
22:33:20 <geekosaur> "store" isn't really a thing in Haskell. "pass" is
22:33:37 <maerwald> file system is too easy.. you want to debug SQL errors when you start your application
22:33:40 <geekosaur> think functions, not "variables"
22:34:16 <monochrom> No no, you want to worry about file locking when you start your application...
22:34:27 <maerwald> well, don't ship for windows
22:34:32 dsal uses a software transactional filesystem
22:34:33 <geekosaur> use sqlite, then you get to deal with both! }:>
22:34:44 <monochrom> \∩/
22:34:50 <dsal> Actually, that's true, I just use SQLite.
22:34:55 <dsal> Except now I'm using Postgres.
22:35:06 <dsal> Totally forgot how much I like postgres.
22:35:13 <maerwald> such webscale
22:35:19 <monochrom> The Pilgrim's Postgres.
22:35:47 <maerwald> [itchyjunk]: was that helpful? :)
22:35:55 <monochrom> The Pilsqlim's Postgres.
22:35:56 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
22:36:03 <[itchyjunk]> If i apply f to n, i get (a,b). i want b to go in a list. then apply f to a and get (c,d), then i want d in the same list and apply f to c ad nausium
22:36:15 zebrag joins (~chris@user/zebrag)
22:36:39 <dsal> What are `n`, `a`, and `b`?
22:37:07 <monochrom> Perhaps you can write a simple recursion for it.
22:37:14 <dsal> That's kind of a strangely shaped thing. Are you writing unfoldr?
22:37:18 <dsal> :t unfoldr
22:37:19 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
22:37:19 <maerwald> [itchyjunk]: the way you'd do that is that your "store" is an argument to your recursive function
22:37:22 <[itchyjunk]> n is the input i give f, f maps n to (a,b)
22:37:27 <monochrom> I can write it for you but I think it's within your reach.
22:37:31 <[itchyjunk]> yes i need recursion but nothign is simple :D
22:37:35 <maerwald> when your recursive function terminates, you return the "store"
22:37:46 <monochrom> OK, beginner-level.
22:38:16 <dsal> [itchyjunk]: Can you write the actual type signature? I'm not sure I understand `:: n -> (a,b)` -- those types have to come from somewhere.
22:38:22 <geekosaur> what defines "terminates" here?
22:38:48 <maerwald> crashes with an SQL error
22:38:54 <[itchyjunk]> if the first value in the tuple is 0
22:39:00 <[itchyjunk]> let me think of the signature
22:39:01 <dsal> So it's an Int?
22:39:18 <[itchyjunk]> yes n , a , b are ints
22:39:23 <dsal> Ooh. that's very different
22:39:35 <dsal> `:: Int -> (Int, Int)`
22:40:12 <monochrom> But that's for f. And this f may be already given.
22:40:26 <[itchyjunk]> thats what happens in each step but i want to get a [Int] after all is said an done
22:40:30 <monochrom> In question is another function, call it g, that uses f again and again etc.
22:40:45 <[itchyjunk]> okay, then i was kinda in the right track
22:41:02 <[itchyjunk]> i have a function that applies this once that i have called helperf
22:41:22 <dsal> Yeah, doing it just once is great. Then you can just keep calling it.
22:41:24 <dsal> > let f n = (n + 1, n * 2) in iterate (f . snd) (1,1)
22:41:25 <lambdabot> [(1,1),(2,2),(3,4),(5,8),(9,16),(17,32),(33,64),(65,128),(129,256),(257,512)...
22:41:31 random-jellyfish joins (~random-je@user/random-jellyfish)
22:41:38 <dsal> > let f n = (n + 1, n * 2) in snd <$> iterate (f . snd) (1,1)
22:41:39 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,2...
22:41:52 <dsal> That's a dumb function. I assume yours isn't. heh
22:42:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
22:42:18 <monochrom> Here is a hint. You probably haven't thought that you can do this:
22:42:20 <monochrom> @src map
22:42:20 <lambdabot> map _ [] = []
22:42:20 <lambdabot> map f (x:xs) = f x : map f xs
22:42:37 <monochrom> Sleep on that. You don't always need an "accumulator".
22:43:31 <dsal> @src unfoldr
22:43:31 <lambdabot> unfoldr f b = case f b of
22:43:31 <lambdabot> Just (a, b') -> a : unfoldr f b'
22:43:31 <lambdabot> Nothing -> []
22:43:38 <dsal> ooh. I didn't think that'd work.
22:43:54 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:44:44 <dsal> @src iterate
22:44:44 <lambdabot> iterate f x = x : iterate f (f x)
22:45:32 <dsal> We should just teach fix and get rid of all this recursion stuff.
22:45:33 <dsal> @src fix
22:45:34 <lambdabot> fix f = let x = f x in x
22:46:04 lavaman joins (~lavaman@98.38.249.169)
22:49:48 <monochrom> That also gets rids of a lot of the weaker students. >:)
22:49:54 <dsal> heh
22:50:32 <monochrom> I am very uncomfortable with getting rid of weak students because I don't want my class average to be too damn high!
22:50:33 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
22:50:51 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
22:52:34 <zero> get rid of map and just fold
22:52:34 <dsal> Do you get paid by a measurable amount of education you put into people?
22:52:43 <dsal> I like fold
22:52:58 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
22:52:58 <monochrom> Do you go one step further, switch to untyped lambda calculus, so that you don't even need that version of fix? >:)
22:53:19 <maerwald> dsal: ahaha
22:53:30 <monochrom> No, my pay is not tied to the class average.
22:54:17 <monochrom> But sometimes if the class average is too damn high or too damn low, the department chair needs to ask me why. And really, I don't know!
22:54:35 <dsal> monochrom: The Musical
22:55:45 <zero> i think education suffers from the observer effect. you cant grade students without the fact that you're grading them has an effect on their performance
22:56:13 <zero> and it's a big effect
22:56:17 <xerox> if it doesn't have an effect why would they enroll
22:56:36 <monochrom> What's wrong with that?
22:56:56 betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be)
22:56:57 <zero> because universities print some papers that get them jobs
22:57:25 <monochrom> Don't tell me naïve left-wing answers such as "after graudation they are never graded again".
22:57:30 <zero> it's not inherently wrong
22:58:04 × DNH quits (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:58:14 <EvanR> this is where curves come in
22:58:16 <zero> it's just impossible not to let it often get in the way of things
22:58:21 <EvanR> the great equalizer
22:59:04 <geekosaur> this is all kinda offtopic by now…
22:59:08 <maerwald> zero: grades are a concept from military. There it's used to distinguish the people who perform best under *pressure*. Because that's what matters there.
22:59:17 <arahael> maerwald: hey, before i switch to rust for my alpine rpi3, is there anything else i could do to get haskell running? the ghcup stuff has missing symbols even if i find and satisfy the libraries.
22:59:56 <monochrom> Perhaps forsake alpine?
23:00:31 DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
23:00:36 <[itchyjunk]> @where paste
23:00:36 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
23:01:11 <arahael> monochrom: i ultimately want to make static binaries, which means musl.
23:01:28 <arahael> and i would prefer not to have to set up and maintain a cross compiler.
23:01:32 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
23:01:34 <[itchyjunk]> my function g seems to be the place where it all goes wrong
23:01:35 <[itchyjunk]> https://paste.tomsmeding.com/hngcugQu
23:02:51 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
23:03:12 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
23:03:20 <[itchyjunk]> does any of it makes sense?
23:03:28 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
23:03:38 <[itchyjunk]> maybe time for a break, it might magically come to me later
23:03:40 <monochrom> In the then branch, "helper (f2 n)" gives you a tuple.
23:03:53 <monochrom> In the else branch, "f1 n" gives you a single number.
23:04:01 <monochrom> Which one do you want?
23:04:06 × aliosablack quits (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Ping timeout: 245 seconds)
23:04:11 <[itchyjunk]> ahhhh
23:04:20 <monochrom> Or did you just forgot a recursive call to g in the then branch.
23:04:51 <[itchyjunk]> i want f2 ( helper ( f2 n) )
23:05:30 <[itchyjunk]> i think it should all be one recursive line once i figure this out xD i was hoping building it up one line at a time like this would make my brain figure it out
23:05:38 <monochrom> f2 doesn't want a tuple either.
23:06:13 <maerwald> arahael: ask in #ghc if someone has bootstrapped a musl aarch64 GHC
23:06:17 <zero> [itchyjunk]: type signatures/annotations are your friend
23:06:21 <monochrom> TBH I am surprised that it is not simply "then f2 n else f1 n"
23:06:41 <monochrom> or "then g (f2 n) else f1 n"
23:07:10 <zero> @type divMod
23:07:11 <lambdabot> Integral a => a -> a -> (a, a)
23:07:13 × ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
23:07:21 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
23:07:24 <monochrom> f2 already uses helper, so what's "helper (f2 n)" doing there?
23:07:26 <arahael> maerwald: thanks for the tip! will do that in a moment.
23:07:31 <jle`> using parseGenericPackageDescription seems to drop the library/executable/etc. portions of the cabal file and only gets the top level metadata
23:07:34 <jle`> i wonder if i'm missing something
23:07:51 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
23:09:51 <dsal> [itchyjunk]: it's pretty important to think about the type signature first, I find. It might seem "harder" but it gets you there sooner and with better error messages.
23:10:39 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
23:10:41 <EvanR> yeah there's probably a reason the type signature doesn't go after the code xD
23:11:16 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
23:12:16 <jle`> ah it's under CondLibrary
23:12:39 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
23:13:06 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
23:13:41 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:14:15 × qwedfg quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
23:15:46 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
23:15:46 × xff0x quits (~xff0x@2001:1a81:52ae:a700:2e71:8ba4:bf99:ed92) (Ping timeout: 245 seconds)
23:16:47 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
23:16:47 xff0x joins (~xff0x@2001:1a81:52ae:a700:790f:4bf3:6d42:a0ab)
23:17:28 × ubert quits (~Thunderbi@p548c9fcb.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:17:41 qwedfg joins (~qwedfg@user/qwedfg)
23:18:10 ubert joins (~Thunderbi@p200300ecdf0ba2d77c1bfff2a135bb9e.dip0.t-ipconnect.de)
23:18:16 × ubert quits (~Thunderbi@p200300ecdf0ba2d77c1bfff2a135bb9e.dip0.t-ipconnect.de) (Remote host closed the connection)
23:19:44 × alzgh quits (alzgh@user/alzgh) (Remote host closed the connection)
23:21:41 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
23:22:22 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:24:56 alzgh joins (alzgh@user/alzgh)
23:28:30 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:31:42 × xff0x quits (~xff0x@2001:1a81:52ae:a700:790f:4bf3:6d42:a0ab) (Remote host closed the connection)
23:31:58 xff0x joins (~xff0x@2001:1a81:52ae:a700:8aec:b385:dec1:cc56)
23:32:27 jinsun__ joins (~quassel@user/jinsun)
23:32:39 × max22- quits (~maxime@2a01cb0883359800a5783feecd0598ff.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:32:51 cosimone` joins (~user@5.170.240.253)
23:33:03 × pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
23:34:06 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds)
23:34:12 × pwug quits (~pwug@user/pwug) (Ping timeout: 268 seconds)
23:34:30 × jinsun quits (~quassel@user/jinsun) (Ping timeout: 260 seconds)
23:36:12 hippoid_ joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
23:36:36 pfurla joins (~pfurla@2804:14d:5c81:4104:2d7f:4f3b:6a60:c865)
23:37:49 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
23:42:44 × sprout quits (~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
23:44:11 <[itchyjunk]> alright, i'll do types first
23:44:19 <[itchyjunk]> i generally seem to always get the signature wrong :P
23:44:33 <[itchyjunk]> the ghci has negatively reinforced my brain to avoid it
23:45:49 <geekosaur> work on the signatures, then
23:45:56 <[itchyjunk]> ;_;
23:46:10 <geekosaur> once you can express an appropriate signature, the function may well "write itself"
23:46:35 <[itchyjunk]> ah, i'll stop avoiding signatures !
23:47:01 × Jing quits (~hedgehog@2604:a840:3::1094) (Remote host closed the connection)
23:47:36 Jing joins (~hedgehog@2604:a840:3::1094)
23:47:48 <monochrom> You can let us take a look at your candidate type sig and invite comments.
23:51:48 <jle`> type signatures are like automatic rubber ducks
23:53:15 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
23:54:56 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
23:58:16 × acidjnk quits (~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
23:58:35 × vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds)

All times are in UTC on 2021-11-22.