Home liberachat/#haskell: Logs Calendar

Logs on 2021-10-19 (liberachat/#haskell)

00:00:03 unmanbearpig joins (~unmanbear@user/unmanbearpig)
00:00:22 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:00:43 <zzz> hey. i just found out we can have duplicate record accessors in data constructors of the same type, as long as their types match
00:03:34 <geekosaur> yep. all the way back to H98. problem is they can be partial
00:04:13 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
00:04:25 abrantesasf joins (~abrantesa@187.36.170.211)
00:04:32 alzgh joins (~alzgh@user/alzgh)
00:04:46 <unit73e> there's also the DuplicateRecordFields extension
00:05:23 <unit73e> though I hardly ever use such extensions
00:05:36 <monochrom> Naw, the problem we considered yesterday was "what if I really want different field types".
00:05:51 <geekosaur> data Foo = Foo { x :: Int } | Bar { x :: Int; y :: Double } | Baz { y :: Double } -- both x and y are partial and will throw exceptions if accessed from the wrong constructor
00:05:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:05:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
00:05:52 wroathe joins (~wroathe@user/wroathe)
00:06:13 <monochrom> So, yesterday the question was about "data T = C1 {a :: Int} | C2 {a :: NotInt}"
00:06:59 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
00:08:11 × ph88 quits (~ph88@2a02:8109:9e00:7e5c::3d56) (Ping timeout: 264 seconds)
00:08:25 <unit73e> Is there a way to make an alias of your own module? because I want to make a `Direction = Up | Down | Left | Right` but there's `Either` and hiding `Left, Right` from Prelude kind of gives me bad taste
00:08:32 <zzz> geekosaur: you mean we get an error if we do `y (Foo 7)` ?
00:08:56 <geekosaur> zzz, yes
00:09:17 <awpr> I can never remember whether it's legal to just say `My.Module.Left`, but it's worth a try
00:09:20 <geekosaur> unit73e, xmonad solves that by calling them U, D, L, R
00:09:25 <zzz> i hate records
00:09:30 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
00:09:33 <unit73e> geekosaur, ok. might as well do the same thing. thanks.
00:09:49 <geekosaur> awpr, yes
00:10:16 <monochrom> In fact you now have to say My.Module.Left and Prelude.Left
00:10:23 <geekosaur> (see Direction2D in xmonad)
00:11:09 <monochrom> zzz: Please don't conflate Haskell's poor execuse of record syntax with records (the real ones) :)
00:11:19 × Cajun quits (~Cajun@user/cajun) (Ping timeout: 256 seconds)
00:11:38 <zzz> :)
00:11:41 <zzz> give me a record
00:11:43 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: restarting)
00:11:49 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:12:08 <monochrom> Oh hell I missed a great pun opportunity. Let me fix it...
00:12:17 acidjnk_new joins (~acidjnk@p200300d0c703cb878946a34aec1faea1.dip0.t-ipconnect.de)
00:12:19 <monochrom> For the record, please don't conflate Haskell's poor execuse of record syntax with records (the real ones) :)
00:12:41 <Axman6> Not sure that pun works, but I'll allow it
00:14:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
00:15:03 <zzz> i'm still not sure of what you mean by "real" records
00:15:23 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
00:15:29 × acidjnk_new3 quits (~acidjnk@p200300d0c703cb87414c380a9484df88.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
00:15:33 <monochrom> For example in SML, Pascal, C, ... basically every language except Haskell.
00:15:39 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255)
00:18:01 × meer quits (~delicacie@2601:6c4:4080:3f80:cc37:7f71:51d3:b41c) (Ping timeout: 245 seconds)
00:18:10 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
00:21:41 × fluffyballoon quits (~user@131.93.208.196) (Remote host closed the connection)
00:24:03 Cajun joins (~Cajun@user/cajun)
00:26:36 fluffyballoon joins (~user@131.93.208.196)
00:27:33 × Cajun quits (~Cajun@user/cajun) (Client Quit)
00:29:52 Cajun joins (~Cajun@user/cajun)
00:35:01 jollygood2 joins (~bc8165b6@217.29.117.252)
00:40:12 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:41:33 × sprout quits (~quassel@2a02:a467:ccd6:1:110c:9227:cd24:5132) (Ping timeout: 258 seconds)
00:46:12 <jollygood2> there's records synax overhaul in ghc 9.2, which is still in alpha IIRC. RecordDotSyntax is one of them
00:46:12 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
00:46:34 MQ-17J joins (~MQ-17J@8.6.144.138)
00:47:03 <jollygood2> also DuplicateRecordFields
00:47:16 <c_wraith> DuplicateRecordFields has been around for a long time
00:47:26 <c_wraith> NoFieldSelectors is the interesting new one in 9.2
00:47:40 <jollygood2> h yes, that one
00:47:58 <zzz> are lenses going to become obsolete?
00:48:14 <c_wraith> No, lenses are finally going to be strictly better than built-in tools
00:48:29 <jollygood2> no. from what I've read, they work fine with dot syntax. and do a lot more
00:48:29 <zzz> how so?
00:48:46 <Axman6> this is news to me too :o
00:49:13 <kronicmage> strictly better except for build times -_-
00:49:38 <monochrom> Um, why do I get the feeling that "lenses are finally better than built-in tools" means "built-in tools are finally getting worse"? :)
00:50:04 <zzz> that thought touched my mind
00:50:07 <dsal> build times are only slow if you're using TH. You could always hand-write your lenses.
00:50:25 <jollygood2> basically, instead of person personName (groupLeader group) we can use group.leader.name . and different records can also have .name etc fields
00:50:33 <jollygood2> pretty neat
00:50:44 <dsal> That's what I did in the project I got yelled at for using lenses -- just locally defined all the lenses where I needed them instead of making them global.
00:50:57 <dsal> I don't know much about RecordDotSyntax, but I don't think I like it.
00:51:00 <c_wraith> here: https://www.reddit.com/r/haskell/comments/mhzf9l/announce_ghc_921alpha1_now_available/gt3lexp/
00:51:27 <zzz> i don't even like qualified dot syntax
00:51:33 <zzz> for the obvious reasons
00:52:09 <c_wraith> Man, I've been waiting on 9.2 for 6 months, according to reddit
00:52:18 <zzz> module dot syntax? i don't know what to call it
00:53:02 <jollygood2> aprox how far are we from stable 9.2?
00:57:31 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 252 seconds)
00:57:59 × hiruji quits (~hiruji@user/hiruji) (Ping timeout: 264 seconds)
00:58:15 <dsal> zzz: do you just not like dots?
00:58:23 hiruji joins (~hiruji@user/hiruji)
00:58:26 <dsal> Or things that appear to mean different things.
00:58:35 × MQ-17J quits (~MQ-17J@8.6.144.138) (Ping timeout: 264 seconds)
00:59:04 <kronicmage> i do wish keyboards had a \cdot key so we could differentiate composition . and record .
00:59:25 <dsal> My keyboard has that.
00:59:28 <geekosaur> ·
00:59:34 × segfaultfizzbuzz quits (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 258 seconds)
00:59:34 <kronicmage> damn
00:59:41 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
00:59:47 <kronicmage> now we just need unicode character extension to support that lol
00:59:48 <dsal> I use emacs. It has all the thigns.
01:00:01 <dsal> I literally just type "f \cdot g" and it shows up as "f · g"
01:00:08 <geekosaur> -XUnicodeSyntax?
01:00:39 <jollygood2> I think it is pretty uncommon to omit space when composing functions.
01:00:45 <geekosaur> hm, not even needed. (·) = (.)
01:01:12 <jollygood2> they could have used different character, but dot is such an ubiquitous syntax for field access across countless languages
01:01:36 <dsal> I like this example: sqr x = x × x
01:01:40 <monochrom> module Data·Function where f ∘ g = \x -> f (g x) -- >:)
01:02:01 <awpr> was that intentionally added to `base`, or was somebody just ASCII-art-ing a confused face and forgot the leading `--`?
01:02:03 <kronicmage> monochrom: that's sexy lmao
01:02:42 <zzz> dsal: things that appear to mean different things
01:03:07 <dsal> zzz: It kind of means the same thing in lens, but you get to think of it a very different way.
01:03:11 × lbseale_ quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
01:03:58 <kronicmage> i still think it's kind of weird that lenses compose backwards
01:04:34 <dsal> It's usually not weird in practice, but sometimes it is.
01:04:52 acidjnk_new3 joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
01:05:31 <c_wraith> they compose forward when you realize a lens is being used to make things bigger :)
01:06:13 <elcaro> Raku uses '∘' for function composition. if you don't want to unicode, you use 'o' instead)
01:06:37 <awpr> I'm tempted to write yet another lens library with the type parameters in the opposite order just so people can't say they compose backwards
01:07:06 <dsal> Call it amateurfunctor-lenses
01:07:26 <c_wraith> ... how long have you been sitting on that name?
01:08:00 × acidjnk_new quits (~acidjnk@p200300d0c703cb878946a34aec1faea1.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
01:08:26 <monochrom> SML uses o for function composition and declares it infix.
01:08:53 <monochrom> In general you can declare any alphabetical function name infix.
01:11:12 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
01:11:20 <c_wraith> that seems like something of a pain for parsing
01:11:36 <monochrom> Yeah
01:13:05 MQ-17J joins (~MQ-17J@8.6.144.172)
01:16:13 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
01:16:15 lavaman joins (~lavaman@98.38.249.169)
01:20:54 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
01:21:58 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 265 seconds)
01:22:04 falafel joins (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com)
01:23:24 <jollygood2> this is dope. c{taken.year = y} -- nested update map (.taken.term) -- nested selector
01:23:46 <monochrom> :)
01:29:24 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
01:31:29 PHO` joins (~PHO@2405:6581:4ee0:2800:c84:d3ec:1ba2:843b)
01:33:18 × acidjnk_new3 quits (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
01:33:37 × guydb89 quits (~guy@98.40.140.117) (Quit: Lost terminal)
01:34:04 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 258 seconds)
01:40:35 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
01:40:53 <zzz> dsal: "bats" would be a better name
01:42:11 × emf_ quits (~emf@2620:10d:c090:400::5:a662) (Ping timeout: 245 seconds)
01:43:44 cjb94216 joins (~cjb@user/cjb)
01:44:18 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
01:45:01 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
01:45:52 × cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds)
01:46:28 cjb94216 is now known as cjb
01:47:44 <dsal> zzz: heh. I just got that.
01:48:08 × jespada quits (~jespada@2803:9800:9842:7a62:a1db:843b:ed19:cad6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:49:24 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
01:49:33 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
01:54:30 × boxscape_ quits (~boxscape_@p54a3581e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
01:55:06 × falafel quits (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds)
01:56:11 × xff0x quits (~xff0x@2001:1a81:52fe:af00:73f9:c60:e593:d5a0) (Ping timeout: 264 seconds)
01:57:47 xff0x joins (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267)
02:09:57 fluffyballoon is now known as fluffyballon`
02:10:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:11:38 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 258 seconds)
02:17:00 fluffyballon` is now known as fluffyballoon
02:20:59 × kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
02:24:08 motherfsck joins (~motherfsc@user/motherfsck)
02:25:18 × slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 260 seconds)
02:37:20 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
02:41:55 × fluffyballoon quits (~user@131.93.208.196) (Ping timeout: 258 seconds)
02:44:02 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:44:08 × td_ quits (~td@muedsl-82-207-238-233.citykom.de) (Ping timeout: 265 seconds)
02:44:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
02:45:43 td_ joins (~td@muedsl-82-207-238-089.citykom.de)
02:46:35 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds)
02:47:59 × abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
02:48:16 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:52:32 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:55:48 × burnsidesLlama quits (~burnsides@dhcp168-043.wadham.ox.ac.uk) (Remote host closed the connection)
03:01:37 × PHO` quits (~PHO@2405:6581:4ee0:2800:c84:d3ec:1ba2:843b) (Quit: Leaving)
03:02:16 PHO` joins (~pho@akari.cielonegro.org)
03:06:53 × alx741 quits (~alx741@186.178.108.68) (Quit: alx741)
03:18:56 Axma85485 joins (~Axman6@user/axman6)
03:18:59 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
03:19:52 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
03:21:02 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds)
03:26:09 meer joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
03:26:13 falafel joins (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com)
03:32:08 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
03:33:26 × meer quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 265 seconds)
03:43:03 meer joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
03:44:37 meer is now known as Inst
03:45:30 lavaman joins (~lavaman@98.38.249.169)
03:45:31 × elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 245 seconds)
03:45:31 × Boarders quits (sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 245 seconds)
03:45:31 × grfn quits (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 245 seconds)
03:46:19 × edmundnoble quits (sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 258 seconds)
03:46:42 × ehamberg quits (sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 258 seconds)
03:46:42 × sclv quits (sid39734@haskell/developer/sclv) (Ping timeout: 258 seconds)
03:46:46 × tritlo quits (sid58727@user/tritlo) (Ping timeout: 245 seconds)
03:46:46 × astra` quits (sid289983@user/amish) (Ping timeout: 245 seconds)
03:47:05 × econo quits (uid147250@user/econo) (Ping timeout: 258 seconds)
03:47:11 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Ping timeout: 264 seconds)
03:47:11 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 264 seconds)
03:47:28 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 258 seconds)
03:47:47 × etrepum quits (sid763@id-763.uxbridge.irccloud.com) (Ping timeout: 264 seconds)
03:47:51 × SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 258 seconds)
03:48:01 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 245 seconds)
03:48:18 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:48:40 edmundnoble joins (sid229620@helmsley.irccloud.com)
03:49:26 tritlo joins (sid58727@user/tritlo)
03:49:27 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
03:49:29 ehamberg joins (sid18208@id-18208.hampstead.irccloud.com)
03:49:29 dmj` joins (sid72307@id-72307.hampstead.irccloud.com)
03:49:30 econo joins (uid147250@user/econo)
03:49:32 SanchayanMaity joins (sid478177@hampstead.irccloud.com)
03:49:34 astra` joins (sid289983@user/amish)
03:49:45 etrepum joins (sid763@id-763.uxbridge.irccloud.com)
03:49:49 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
03:50:11 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
03:59:57 grfn joins (sid449115@id-449115.helmsley.irccloud.com)
03:59:57 elvishjerricco joins (sid237756@id-237756.helmsley.irccloud.com)
04:00:26 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
04:00:59 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
04:01:57 sclv joins (sid39734@haskell/developer/sclv)
04:02:04 Boarders joins (sid425905@id-425905.lymington.irccloud.com)
04:05:06 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
04:05:41 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
04:08:36 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
04:19:10 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
04:31:11 × phma quits (~phma@host-67-44-209-44.hnremote.net) (Read error: Connection reset by peer)
04:31:36 jeffz joins (~user@lambda.xen.prgmr.com)
04:32:09 phma joins (~phma@host-67-44-208-9.hnremote.net)
04:35:07 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
04:35:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:35:20 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
04:35:20 wroathe joins (~wroathe@user/wroathe)
04:39:23 × MQ-17J quits (~MQ-17J@8.6.144.172) (Ping timeout: 264 seconds)
04:39:43 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
04:39:59 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 258 seconds)
04:40:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:40:59 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:43:52 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
04:44:47 × Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 264 seconds)
04:46:35 × rekahsoft quits (~rekahsoft@52.129.35.150) (Ping timeout: 264 seconds)
04:53:59 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
04:54:02 × cjb quits (~cjb@user/cjb) ()
04:56:13 Axma85485 is now known as Axman6
05:06:00 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
05:08:00 × zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
05:08:17 coot joins (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl)
05:09:59 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
05:10:11 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
05:10:31 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 252 seconds)
05:12:12 zmt00 joins (~zmt00@user/zmt00)
05:13:04 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
05:14:41 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 245 seconds)
05:15:15 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
05:15:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
05:18:14 geekosaur joins (~geekosaur@xmonad/geekosaur)
05:26:25 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
05:30:47 mikoto-chan joins (~mikoto-ch@185.237.102.123)
05:30:56 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds)
05:33:53 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:34:42 × rembo10 quits (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
05:35:45 rembo10 joins (~rembo10@remulis.com)
05:42:53 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
05:47:22 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
05:49:26 × mikoto-chan quits (~mikoto-ch@185.237.102.123) (Quit: mikoto-chan)
05:50:31 × falafel quits (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds)
05:55:10 × _\_ quits (~o@user/ding) (Read error: Connection reset by peer)
05:55:38 _\_ joins (~o@user/ding)
05:59:04 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
05:59:20 mc47 joins (~mc47@xmonad/TheMC47)
05:59:43 Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
06:15:47 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
06:18:33 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection)
06:18:48 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
06:19:59 × _xor quits (~xor@72.49.199.147) (Read error: Connection reset by peer)
06:20:31 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds)
06:20:51 pmk joins (~user@2a02:587:9418:a234:40de:ca53:4e3:4a70)
06:20:52 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
06:21:59 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
06:24:25 × brainfreeze quits (~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection)
06:25:02 × jollygood2 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
06:25:51 _xor joins (~xor@72.49.199.147)
06:26:23 michalz joins (~michalz@185.246.204.77)
06:26:50 × _xor quits (~xor@72.49.199.147) (Read error: Connection reset by peer)
06:27:11 _xor joins (~xor@72.49.199.147)
06:28:37 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
06:34:15 × p3n quits (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.2 - https://znc.in)
06:36:22 × unmanbearpig quits (~unmanbear@user/unmanbearpig) (Ping timeout: 260 seconds)
06:38:49 p3n joins (~p3n@217.198.124.246)
06:44:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:44:52 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
06:48:11 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
06:48:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
06:49:28 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
06:50:57 Sgeo_ joins (~Sgeo@user/sgeo)
06:51:12 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:52:05 × Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 265 seconds)
06:52:40 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
06:56:28 fendor joins (~fendor@77.119.169.61.wireless.dyn.drei.com)
06:57:46 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
06:59:04 lortabac joins (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9)
06:59:48 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
07:06:42 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
07:12:03 ec joins (~ec@gateway/tor-sasl/ec)
07:12:53 × fendor quits (~fendor@77.119.169.61.wireless.dyn.drei.com) (Remote host closed the connection)
07:13:29 ubert joins (~Thunderbi@178.115.56.221.wireless.dyn.drei.com)
07:18:40 Neuromancer joins (~Neuromanc@user/neuromancer)
07:19:03 jollygood2 joins (~bc8165b6@217.29.117.252)
07:19:29 Guest4852 joins (~Guest48@82.40.121.143)
07:21:00 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
07:21:05 <jollygood2> hi. what hash table should I use? I have perfect hash, several tens of thousands of elements, and look up will be used in a very tight loop
07:21:32 <jollygood2> I don't need mutability
07:21:34 ub joins (~Thunderbi@178.115.56.221.wireless.dyn.drei.com)
07:23:53 nschoe joins (~quassel@178.251.84.79)
07:24:22 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
07:24:35 × nschoe quits (~quassel@178.251.84.79) (Client Quit)
07:28:54 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
07:30:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:30:29 × Cajun quits (~Cajun@user/cajun) (Ping timeout: 256 seconds)
07:31:48 Inst_ joins (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843)
07:32:06 <Guest4852> Why does `f :: Either Bool Void -> Char; f (Left True) = 'T'; f (Left False) = 'F'` give a non-exhaustive pattern match error? It covers every possible pattern.
07:33:54 <Inst_> so
07:34:09 chele joins (~chele@user/chele)
07:39:06 <pavonia> Guest4852: What about Right?
07:40:14 <Guest4852> Right what? There's nothing that can be inside it.
07:40:30 <pavonia> Right undefined
07:41:19 <Guest4852> Oh. Good point.
07:44:10 <lortabac> Guest4852: that's what 'absurd' is for
07:44:31 × retroid_ quits (~retro@2e41e9c8.skybroadband.com) (Ping timeout: 252 seconds)
07:44:41 <lortabac> f (Right x) = absurd x
07:45:23 retroid_ joins (~retro@2e41e9c8.skybroadband.com)
07:47:13 lavaman joins (~lavaman@98.38.249.169)
07:50:57 <Guest4852> I was hoping to avoid the extra code. But I guess I can't. Thanks.
07:51:39 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
07:55:08 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255) (Remote host closed the connection)
07:56:14 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
07:57:23 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:00:42 edwtjo_ is now known as edwtjo
08:04:52 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 252 seconds)
08:05:24 hendursa1 joins (~weechat@user/hendursaga)
08:06:13 mc47 joins (~mc47@xmonad/TheMC47)
08:08:33 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
08:09:06 kuribas joins (~user@ptr-25vy0i72e2u2h548zvl.18120a2.ip6.access.telenet.be)
08:09:06 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:11:02 mei6 joins (~mei@user/mei)
08:13:36 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
08:14:35 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:14:39 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds)
08:14:53 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
08:17:29 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
08:17:54 geekosaur joins (~geekosaur@xmonad/geekosaur)
08:18:08 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:18:14 stengah joins (~stengah@user/stengah)
08:19:31 ubert1 joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
08:19:32 ub1 joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
08:19:35 × ub quits (~Thunderbi@178.115.56.221.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
08:19:35 × ubert quits (~Thunderbi@178.115.56.221.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
08:19:35 ub1 is now known as ubert
08:19:40 × Guest4852 quits (~Guest48@82.40.121.143) (Quit: Client closed)
08:20:34 <fgaz> I have a question about laziness
08:20:34 <fgaz> suppose there is a `data MapWrap a b = MapWrap !(Map a b)`
08:20:36 <fgaz> and I'm using the strict Map interface
08:20:40 <fgaz> and I define `f x (MapWrap m) = insert x m`
08:20:44 <fgaz> am I right that it doesn't make a difference whether i bang x or not, since it will be evaluated anyway due to the fact that MapWrap's field is strict and so is insert?
08:21:03 unmanbearpig joins (~unmanbear@user/unmanbearpig)
08:22:00 <fgaz> s/x/k v/
08:28:05 × Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Read error: Connection reset by peer)
08:29:29 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
08:30:38 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
08:31:17 zaquest joins (~notzaques@5.128.210.178)
08:33:04 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
08:34:10 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
08:36:40 pavonia joins (~user@user/siracusa)
08:37:35 × mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 264 seconds)
08:40:49 mc47 joins (~mc47@xmonad/TheMC47)
08:43:24 ph88 joins (~ph88@2a02:8109:9e00:7e5c::3d56)
08:46:58 gehmehgeh joins (~user@user/gehmehgeh)
08:47:10 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
08:50:39 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
08:55:30 acidjnk_new3 joins (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de)
08:55:33 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
08:56:28 LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao)
08:57:41 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
08:59:41 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 245 seconds)
09:02:04 <tomsmeding> fgaz: if s/i bang x/i bang v/ then yes; the k is always evaluated anyway because otherwise map doesn't know where to insert it
09:02:21 <tomsmeding> also you should return MapWrap (insert k v m), not just 'insert k v m' ;)
09:03:13 <tomsmeding> with regards to strict/lazy map, be aware that while the functions in Data.Map.Strict ensure evaluation of the inserted values, the Map type is the same and hence the instances (in particular Functor) are lazy
09:04:14 × Inst_ quits (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843) (Read error: Connection reset by peer)
09:04:33 Inst_ joins (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843)
09:08:48 <fgaz> yeah there's a big warning at the top of the module
09:09:47 <fgaz> i wonder if there are plans to fix that
09:09:58 <fgaz> thanks tomsmeding
09:10:05 <fgaz> <tomsmeding> "also you should return MapWrap..." <- yes, that's what i meant :)
09:11:08 <tomsmeding> fgaz: https://github.com/haskell/containers/issues/74
09:12:51 <fgaz> i see.. edward does have a point
09:13:46 acidjnk_new joins (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de)
09:17:08 × acidjnk_new3 quits (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
09:21:15 × stengah quits (~stengah@user/stengah) (Quit: stengah)
09:21:52 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
09:22:09 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
09:24:48 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
09:27:57 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
09:28:40 gehmehgeh joins (~user@user/gehmehgeh)
09:33:00 __monty__ joins (~toonn@user/toonn)
09:36:16 ArtVandelayer joins (~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
09:37:39 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
09:42:13 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
09:52:25 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
09:53:22 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
10:00:26 <dminuoso> Im looking for some toolkits to derive some interrogative console interfaces from. wizards seems like a good starter, is there something similar that allows for tab completion as well?
10:01:46 sayola joins (~vekto@dslb-002-201-085-156.002.201.pools.vodafone-ip.de)
10:01:56 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
10:10:40 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
10:10:59 <ncopa> hi. I'm trying to upgrade ghc to 9.0.1 for alpine, but I am struggling with updating cabal-install. I have burned too many days on this already and this is blocking the alpine 3.15 release. My question is: does it really make sense to ship cabal and haskell with a distro in the first place?
10:11:12 <ncopa> or would it be ok to remove those packages
10:15:59 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 264 seconds)
10:18:22 aplainze1akind is now known as aplainzetakind
10:20:21 <dminuoso> Mmm, maybe haskeline is waht I want
10:30:16 <Hecate> dminuoso: seems like it yeah
10:31:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
10:32:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:37:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:37:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:40:24 <dminuoso> Ohh hah, wizards and haskeline seem to go together.
10:43:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:43:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:45:51 rkrishnan joins (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c)
10:46:25 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
10:47:03 stengah joins (~stengah@user/stengah)
10:47:11 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
10:47:28 <stengah> hey! so I'm trying to understand monads
10:47:35 <stengah> and just had a thought
10:47:44 <stengah> (>>=
10:47:53 <stengah> >>=
10:48:06 <stengah> is like a continuation
10:48:23 <stengah> is there anything wrong with this thinking?
10:48:45 <dminuoso> stengah: For the specific IO instance that seems like one possible approach.
10:49:05 <Franciman> stengah: I also like to think about it as «effectful let»
10:49:13 <dminuoso> stengah: The thing is, Monad doesnt have an instrinsitic meaning where you can phrase: (>>=) is <insert something>
10:49:13 <Franciman> it binds a variable to the result of an effectufl operation
10:49:23 <Franciman> it's like you did:
10:49:35 <Franciman> «let» x = action
10:49:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:49:38 <dminuoso> stengah: All explanations you likely see are just from people who have built up an intuition that is developed by practicing many instances.
10:49:40 <Franciman> in f x
10:49:42 <stengah> a>>=f means after getting a do something (described by f)
10:49:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:50:15 <dminuoso> stengah: For IO this is a rough (inaccurate) description, but it should work as an initial step.
10:50:38 <stengah> ok
10:50:46 <dminuoso> stengah: The key thing to realize is that Monad is just a typeclass/interface, so >>= means different things for different instances.
10:50:52 <dminuoso> But that's perfectly okay
10:51:05 <dminuoso> stengah: So let me rephrase your statement a little bit:
10:51:14 <dminuoso> >>= for IO is (sort of) like a continuation
10:51:21 <dminuoso> The key addition is "for IO"
10:51:31 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
10:51:56 <dminuoso> Go with that mind model until you encounter a different instance. At that point, you can gain some intution what >>= means for that type.
10:52:08 <kuribas> there's a interesting link between monads and continations.
10:52:16 <dminuoso> Yeah which is probably not helpful.
10:52:40 <kuribas> well, a monad is not a continuation, if that is what you mean.
10:52:42 <dminuoso> stengah: And you repeat that process, and without extra effort you will overtime begin to understand what monad abstracts over.
10:52:51 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
10:52:54 <kuribas> but they are likely equally powerful.
10:53:39 <stengah> so I should just look at many instances of monad in the wild
10:53:50 <kuribas> stengah: yes
10:54:02 <dminuoso> stengah: Personally Id say no.
10:54:07 ec joins (~ec@gateway/tor-sasl/ec)
10:54:08 <dminuoso> stengah: Let this occur on its own.
10:54:20 <dminuoso> Forcibly understanding what Monad is about is not particularly helpful when learning Haskell.
10:54:32 <dminuoso> So if you understand what >>= does for IO, that's great. Keep it at that.
10:54:41 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
10:54:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:55:00 <dminuoso> Then later, you might discover that there is Monad Maybe, so >>= has some different behavior for that. So just explore it then
10:55:24 <dminuoso> Because really, almost every instance is ridiculously simple to understand
10:55:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:38 stengah initiates path to monad enlightenment
10:55:56 k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
10:56:04 × rkrishnan quits (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) (Remote host closed the connection)
10:56:47 <dminuoso> stengah: My key realization was, when something is written polymorphically over monad - that its its type signature mentions something like `Monad m => ...`, it just means *you* get to pick some arbitrary m as long as it has an instance Monad. So you can pick `m ~ IO`, for instance.
10:57:05 <dminuoso> So you dont necessarily must understand what Monad is about, you just pick some type you like.
10:57:20 × k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Client Quit)
10:57:31 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
10:57:34 <stengah> hmmm
10:57:56 k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
10:58:41 <dminuoso> So for `IO` it's a very natural thing to want and sequence two actions in such a way, that one depends on the other. So for example you want to fetch some data from a database, and use the result to do something else.
10:59:03 lavaman joins (~lavaman@98.38.249.169)
10:59:05 <dminuoso> We could have simply made a function called `then :: IO a -> (a -> IO b) -> IO b` that does this.
10:59:24 <dminuoso> And in all likelihood, if users got presented with `then` it would have just taken you 2 minutes to understand what this is and how to use it
10:59:29 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
11:00:04 <dminuoso> There's nothing magical about this, nothing mathematical, nothing overly complicated.
11:00:51 alx741 joins (~alx741@186.178.108.68)
11:00:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
11:00:59 <dminuoso> And in fact:
11:01:12 <dminuoso> We put it into a typeclass called Monad, and `then` is just named (>>=)
11:01:16 <dminuoso> % :t (>>=)
11:01:17 <yahb> dminuoso: Monad m => m a -> (a -> m b) -> m b
11:01:44 <lortabac> this function exists, it's just not in Prelude
11:01:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:01:58 <dminuoso> stengah: ^- recall what I said above? If it mentions `Monad m => ...` it means *you* get to decide what `m` is, as long as there is an `instance Monad m`, and then this does whatever the implementor wrote for that.
11:02:09 × nehsou^ quits (~nehsou@70.166.66.234) (Remote host closed the connection)
11:02:11 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds)
11:02:17 <dminuoso> So if you pick IO, it becomes this boring and simple `then`
11:02:21 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
11:02:37 rkrishnan joins (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c)
11:02:59 <lortabac> in GHC.Base there are bindIO, thenIO and returnIO
11:03:10 <dminuoso> lortabac: Ah interesting. :)
11:03:20 <dminuoso> % import GHC.Base
11:03:21 <yahb> dminuoso:
11:03:22 <dminuoso> % :t thenIO
11:03:22 <yahb> dminuoso: IO a -> IO b -> IO b
11:03:26 <dminuoso> % :t bindIO
11:03:26 <yahb> dminuoso: IO a -> (a -> IO b) -> IO b
11:04:53 <dminuoso> lortabac: Maybe this whole Monad confusion would have never happened, it you'd start with these primitives and properly educate about adhoc polymorphism - and after that simply say that `instance Monad IO where (>>=) = bindIO; return = returnIO`
11:04:55 <stengah> nice
11:05:14 dminuoso wonders
11:05:15 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
11:05:38 <c_wraith> it's really hard to make people stop believing there's a deep meaning they don't understand
11:05:52 <lortabac> dminuoso: personally I would have exposed these functions in Prelude
11:06:11 Cajun joins (~Cajun@user/cajun)
11:06:12 <lortabac> no need to use Monad until you need to generalize over all monads
11:06:24 <dminuoso> Indeed!
11:06:36 <dminuoso> Could have had mapMaybe, concatMap, bindIO
11:06:37 <lortabac> maybe it's for the do notation
11:06:55 <dminuoso> lortabac: there's a pretty nifty formatting where you can avoid the do notation
11:06:56 <lortabac> you can't have do notation with the monomorphic functions
11:07:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
11:07:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:07:55 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:07:56 <dminuoso> lortabac: https://gist.github.com/dminuoso/16bd907d520325722cfcf1f148395814
11:07:57 <dminuoso> This gets close
11:08:09 <dminuoso> So as long as you use a dedicated monomorphized operator variant of bindIO and thenIO...
11:08:47 <lortabac> nice, but I have to say it's less readable than do notation
11:09:03 <dminuoso> Which could be a good motivation to introduce do-notation later on.
11:09:15 <lortabac> yes
11:09:40 <dminuoso> And actually, you can use do-notation with RebindableSyntax.
11:09:41 <dminuoso> :p
11:09:56 <lortabac> also (not useful for beginners) IO itself is exposed in GHC.Types
11:11:37 <dminuoso> c_wraith: I guess so. Urban myths are particularly hard to get rid of.
11:12:25 ec joins (~ec@gateway/tor-sasl/ec)
11:12:27 <c_wraith> it's sort of like believing in a programming illuminati. They're the ones holding the true secret meaning of "monad"
11:12:33 <lortabac> in one occasion it allowed me to recreate a custom "bind" function that works with my own types
11:13:08 <lortabac> that's a rare use case, but it's just to show that IO is not as special as you might think initially
11:13:59 <stengah> dminuoso: I'll meditate on what you said.
11:14:01 <stengah> ty
11:14:40 mbuf joins (~Shakthi@27.58.140.141)
11:14:53 hiruji` joins (~hiruji@2606:6080:1002:8:3285:30e:de43:8809)
11:15:58 × hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds)
11:19:10 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
11:19:31 <jneira[m]> <ncopa> "hi. I'm trying to upgrade ghc to..." <- well several linux distros does it, but it is not a good argument ;-)
11:20:05 <jneira[m]> otoh we also have ghcup nowadays and it is usually recommended to install the haskell toolchain
11:20:43 <jneira[m]> do you have some stats of its actual real use?
11:20:51 <ncopa> thats why i ask, since the recommended way is normally not to use the distro package
11:21:14 <ncopa> well, we have at least two relatively important packages using it: shellcheck and pandoc
11:21:36 <ncopa> unfortunately we have only ghc for x86_64 and it is a pain to bootstrap for new architectures
11:22:35 <ncopa> we use shellcheck for our CI, and i dont think we want install shellcheck with ghcup
11:22:55 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
11:23:13 <ncopa> so i guess i will have to spend another few days to fix the ghc distro package
11:23:55 <jneira[m]> hmm you did mention cabal before
11:24:57 <dminuoso> lortabac: Yeah what can go wrong with poking in the internals of IO. See top comment https://web.archive.org/web/20200111052206/https://www.reddit.com/r/haskell/comments/2cbgpz/flee_traveller_flee_or_you_will_be_corrupted_and/
11:24:59 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 264 seconds)
11:25:21 <jneira[m]> you could open an issue in the cabal repo about, are you using https://github.com/haskell/cabal/tree/master/bootstrap?
11:27:08 <merijn> ncopa: You can just install the bindists directly?
11:27:16 <merijn> ncopa: That's what I've been doing for years
11:27:58 <merijn> otoh, that's basically what ghcup does for you :p
11:28:47 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:29:16 <lortabac> dminuoso: haha, I swear that in that particular case it was safe (and I didn't have any other option)
11:31:46 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
11:32:55 mc47 joins (~mc47@xmonad/TheMC47)
11:36:42 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
11:36:47 <dminuoso> lortabac: The times I thought "Oh now this unsafePerformIO is really safe", and got bitten back mysterious ways... :p
11:36:58 <lortabac> :D
11:37:14 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
11:37:22 <unit73e> yeah I haven't used xmonad for a while. Maybe I should get back since I know haskell a lot more now. I'm using i3wm instead.
11:37:51 <unit73e> xmonad is more configurable
11:37:56 <merijn> I mean
11:38:05 <merijn> The real insight is that xmonad isn't a window manager
11:38:16 <merijn> It's a library/DSL for writing custom window managers :p
11:38:24 <dminuoso> That's not really correct
11:38:33 <dminuoso> xmonad comes with plenty defaults that make it a proper window manager
11:38:47 lavaman joins (~lavaman@98.38.249.169)
11:39:17 <unit73e> I still get what merijn meant. it's just vim/emacs aren't editors, they're DSL for writing custom editors
11:39:24 <unit73e> but both are editors
11:39:34 <merijn> tbh, I kinda disagree on vim, there, tbh
11:39:51 <unit73e> there was that haskell one
11:39:56 <dminuoso> In case of emacs its sort of wrong too.
11:40:16 <unit73e> both are sort of wrong but I think you get the point
11:40:21 <dminuoso> The C core is essentially a buffer framework, but emacs comes with plenty of elisp making it an editor out of the box.
11:41:03 <unit73e> it was this guy here: https://yi-editor.github.io/
11:41:08 <dminuoso> And Id consider the elisp code to be part of emacs.
11:41:14 <unit73e> looks dead
11:41:39 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
11:41:48 <geekosaur> yeh, every so often someoine picks it up, hacks on it for a few months, and gives up
11:42:15 <unit73e> hum, it looked like a nice project
11:42:25 <geekosaur> mostly because everyone who tries wants to turn it into a full-fledged IDE instead of just an editor. it's already pretty usable just as an editor
11:42:42 <merijn> Custom editors are like people's "dream game"
11:42:52 <merijn> More fun in theory than in practice :p
11:43:01 <unit73e> doesn't language server solve that problem?
11:43:03 hyiltiz joins (~quassel@31.220.5.250)
11:43:06 <unit73e> of being an "IDE"
11:43:07 <dminuoso> lortabac: My favourite was using `D { ..., someRef = unsafePerformIO (newIORef Nothing) }` inside a traversal. Turns out that GHC let-floated this ioref out, aliasing some hundred thousand IORefs in a tree to a single shared mutable buffer.
11:43:15 <dminuoso> It looked so innocent...
11:43:17 <geekosaur> sure, but HLS onlyt sprang into existence a year ago
11:43:49 <unit73e> right. well yi just has to support that. language server is one of the few things microsoft did right lol
11:45:02 <unit73e> vscode is kind of cheesy though
11:45:16 <unit73e> it's okayish but kind of quirky
11:45:45 <unit73e> I just use neovim
11:47:35 <Cajun> in what way is vscode kinda quirky? it feels pretty solid, and its much easier to tell someone new to the language to use vscode than vim, especially when they are accustomed to IDEs
11:47:48 <ncopa> merijn: i guess I can install the bindists directly, but that cannot be used as dependencies for any other alpine packages
11:47:55 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:48:14 <ncopa> basically, what i wonder is if i can remove the ghc package and cabal package and let the users use the bindists directly
11:48:20 <merijn> ncopa: True, but why would GHC be a dependency of a package you build?
11:48:36 <merijn> ncopa: Bindists don't come with cabal, but other than that, yes
11:48:52 × ArctVaulMarsHMPJ quits (~pjetcetal@2.95.44.252) (Read error: Connection reset by peer)
11:49:10 <ncopa> so i dont need ghc to build shellcheck or pandoc?
11:49:31 <merijn> ncopa: I work a lot on university/research cluster machines where I can't use the distro package manager ('cause no root) and just dumping the bindist in my homedir is fine
11:49:43 <merijn> ncopa: You need it to build those, but not to *use* them
11:50:07 <merijn> ncopa: Unless you're saying alpine packages require installing build dependencies of packages to use those packages?
11:51:09 <ncopa> well, alpine normally build the binaries from source and provides the binaries as distro packages so distro package manager can use the as dependencies for other distro packages
11:51:49 <merijn> ncopa: Right, but the shellcheck/pandoc binaries don't need GHC or cabal installed
11:51:55 ubert2 joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
11:52:07 <ncopa> correct. not when they are built
11:52:28 <unit73e> Cajun, it's definitely easier to begin but I got into a lot of weirdness I can't really remember right now
11:52:38 <ncopa> how do i install the shellcheck precompiled binary on alpine?
11:52:43 <unit73e> one had to do with git features
11:53:10 <unit73e> still, better than the other GUI only editors
11:53:22 <unit73e> imo
11:53:32 × ubert1 quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
11:53:39 × phma quits (~phma@host-67-44-208-9.hnremote.net) (Read error: Connection reset by peer)
11:54:39 phma joins (~phma@host-67-44-209-75.hnremote.net)
11:55:47 <ncopa> ok the precompiled binary actually works. https://github.com/koalaman/shellcheck/releases
11:55:59 <ncopa> maybe i can kick ghc out of alpine after all
11:59:17 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 258 seconds)
11:59:54 <merijn> ncopa: I mean, GHC uses static linking (for haskell libraries, anwyay) by default. So if you don't have crazy external dependencies the only thing most Haskell binaries depend on is libc
12:01:10 × amk quits (~amk@109.255.169.126) (Remote host closed the connection)
12:02:12 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
12:02:18 amk joins (~amk@109.255.169.126)
12:03:02 <ncopa> alpine linux uses musl libc so normally a rebuild is needed for precompiled things that links to libc.so.6
12:03:34 <merijn> ncopa: Yes, but if the binary is built on alpine it will just statically link musl
12:03:51 <merijn> (or dynamically, dunno what the default is)
12:04:00 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
12:04:16 <ncopa> hum... this is very tempting
12:04:38 <ncopa> im pretty sure i will get a handful angry users if i remove ghc package
12:04:56 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
12:05:03 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
12:05:23 <ncopa> but i'll just point them to the "recommended" way to install and manage and keep the haskell stuff up dated
12:05:37 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
12:05:43 <ncopa> would simplify things
12:06:10 <merijn> ncopa: Basically, I feel that if installing, say, vim doesn't pull in gcc/clang on a distro, then shellcheck/pandoc shouldn't pull in GHC
12:06:23 <ncopa> oh ofcourse not
12:06:36 <ncopa> apk add vim does of course not install gcc
12:06:44 <ncopa> and apk add shellcheck does not pull in ghc
12:06:54 <ncopa> the problem is that we need those at build time
12:07:14 alzgh joins (~alzgh@user/alzgh)
12:07:14 <ncopa> we cannot provide andy vim package without having a gcc compiler. nore can we build any kernel or anything else
12:08:06 <ncopa> what im saying is that we need a ghc package to be able to build other packages that are written in haskell
12:09:11 <ncopa> but if we can say: alpine does not use haskell (no shellcheck, no pandoc etc) then we can remove ghc package
12:09:57 <ncopa> but that also means that we cannot provide any packages for anything in the (build time) dependency chain
12:11:41 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
12:13:11 <merijn> Does the alpine package infrastructure not support separate build and runtime dependencies?
12:13:13 × mei6 quits (~mei@user/mei) (Read error: Connection reset by peer)
12:13:24 <ncopa> nope
12:13:34 <merijn> Well, RIP
12:13:43 <ncopa> alpine is very small and simple
12:13:58 <ncopa> well
12:14:00 <ncopa> sorry
12:14:11 <ncopa> it does support separate build and runtime deps. i misread
12:19:35 Guest|27 joins (~Guest|27@185.207.140.160)
12:20:11 × Guest|27 quits (~Guest|27@185.207.140.160) (Client Quit)
12:20:22 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 258 seconds)
12:21:58 × jollygood2 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
12:26:26 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:29:45 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
12:31:15 lavaman joins (~lavaman@98.38.249.169)
12:35:56 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:36:14 ec joins (~ec@gateway/tor-sasl/ec)
12:36:24 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
12:39:33 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:40:14 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds)
12:41:40 Farzad joins (~FarzadBek@178.131.28.133)
12:41:58 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
12:42:23 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
12:43:39 <janus> how do people feel about replacing 'Nothing -> pure Nothing' branches with foldMapM? I think that should be possible but i wonder why that isn't a base function
12:45:44 <janus> and why isn't there a flipped version of it so that i can use it like 'whenJust' ?
12:46:04 <merijn> What's whenJust?
12:46:11 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:46:22 <janus> merijn: https://hackage.haskell.org/package/extra-1.7.10/docs/Control-Monad-Extra.html#v:whenJust
12:46:25 <merijn> Isn't that just for/for_
12:46:35 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
12:46:41 <merijn> Yeah, that's just for_ :p
12:46:43 <merijn> :t for_
12:46:45 <lambdabot> (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
12:46:46 <merijn> :t forM_
12:46:48 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
12:46:59 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
12:47:16 <janus> aaah cool! thank you so much! i should ask relude devs to point that out, hmm
12:48:08 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:49:00 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
12:50:53 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:51:36 zebrag joins (~chris@user/zebrag)
12:51:44 <janus> i'll try to ask neil mitchell to point that out in the whenJust docs
12:53:30 shapr joins (~user@pool-108-28-144-11.washdc.fios.verizon.net)
12:53:36 <janus> how do i reference Data.Foldable.for in haddock syntax?
12:53:45 <sshine> 'Data.Foldable.for' ?
12:54:37 <janus> sshine: aah ok right, according to section 3.8.7 https://www.haskell.org/haddock/doc/html/ch03s08.html
12:55:00 <sshine> yup :)
12:55:18 <sshine> not sure how that works across package boundaries.
12:56:05 <merijn> sshine: It does, if the module is imported/in scope
12:56:08 <sshine> it probably needs to be present when generating the haddock.
12:56:25 <sshine> yeah, I was gonna say "in scope", but not in the sense that it needs to be imported in the particular file. right?
12:56:32 × uGest372 quits (~xxx@47.245.54.240) (Remote host closed the connection)
12:56:39 <geekosaur> doesn't need to be imported, just known
12:57:26 <sshine> it is known, Khaleesi.
12:57:38 × stengah quits (~stengah@user/stengah) (Ping timeout: 260 seconds)
12:57:38 <geekosaur> I think you can point a haddock run to other haddock metadata to use for such references
12:58:38 ArctVaulMarsHMPJ joins (~pjetcetal@2.95.44.252)
12:58:46 jespada joins (~jespada@2803:9800:9842:7a62:5d33:6404:2aef:9813)
12:58:58 Guest372 joins (~xxx@47.245.54.240)
12:59:11 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
12:59:50 × ArctVaulMarsHMPJ quits (~pjetcetal@2.95.44.252) (Remote host closed the connection)
13:03:31 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 252 seconds)
13:05:00 xiongxin joins (~quassel@113.116.34.23)
13:11:07 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) (Quit: WeeChat 2.8)
13:13:24 slack1256 joins (~slack1256@45.4.2.52)
13:13:45 max22- joins (~maxime@2a01cb08833598001d1f311113516d41.ipv6.abo.wanadoo.fr)
13:18:22 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:30:30 × max22- quits (~maxime@2a01cb08833598001d1f311113516d41.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
13:30:56 stengah joins (~stengah@user/stengah)
13:42:52 <ph88> what type should i make to use blaze-html with State monad ?
13:42:59 <ph88> https://hackage.haskell.org/package/blaze-html-0.9.1.2
13:46:21 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:46:50 hendursaga joins (~weechat@user/hendursaga)
13:51:05 shriekingnoise joins (~shrieking@186.137.144.80)
13:51:59 max22- joins (~maxime@2a01cb0883359800342ef13833bd6f3b.ipv6.abo.wanadoo.fr)
13:52:05 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
13:52:05 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
13:52:05 wroathe joins (~wroathe@user/wroathe)
13:57:58 × acidjnk_new quits (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
13:58:10 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
13:59:07 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
14:01:48 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
14:05:33 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
14:05:43 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
14:07:44 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
14:07:44 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
14:11:22 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
14:12:11 × xff0x quits (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) (Ping timeout: 245 seconds)
14:12:35 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
14:13:50 × stengah quits (~stengah@user/stengah) (Quit: stengah)
14:15:05 Guest|60 joins (~Guest|60@ip-95-223-74-231.hsi16.unitymediagroup.de)
14:15:35 × Guest|60 quits (~Guest|60@ip-95-223-74-231.hsi16.unitymediagroup.de) (Client Quit)
14:15:54 <ph88> i forgot how to work with two monads at the same time and when to use lift, is there a good tutorial for it ?
14:16:08 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
14:22:52 xff0x joins (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267)
14:23:14 <Hecate> ph88: book of monads I think
14:25:55 × amk quits (~amk@109.255.169.126) (Remote host closed the connection)
14:28:01 ASSISTENZA joins (~Username@net-47-53-74-164.cust.vodafonedsl.it)
14:28:19 × ASSISTENZA quits (~Username@net-47-53-74-164.cust.vodafonedsl.it) (Excess Flood)
14:41:23 o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
14:41:37 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
14:42:11 ASSISTENZA joins (~Username@net-47-53-74-164.cust.vodafonedsl.it)
14:42:30 × ASSISTENZA quits (~Username@net-47-53-74-164.cust.vodafonedsl.it) (Excess Flood)
14:42:48 ASSISTENZA joins (~Username@net-47-53-74-164.cust.vodafonedsl.it)
14:44:02 × xiongxin quits (~quassel@113.116.34.23) (Ping timeout: 260 seconds)
14:44:12 xiongxin_ joins (~quassel@113.116.35.81)
14:44:57 × ASSISTENZA quits (~Username@net-47-53-74-164.cust.vodafonedsl.it) (Client Quit)
14:45:52 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
14:46:02 × ubert quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
14:46:48 × o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Ping timeout: 258 seconds)
14:48:14 lortabac joins (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9)
14:48:20 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 258 seconds)
14:50:46 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
14:51:28 × Farzad quits (~FarzadBek@178.131.28.133) (Quit: Leaving)
14:51:40 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
14:56:46 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 258 seconds)
14:58:31 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
14:59:01 wonko joins (~wjc@62.115.229.50)
14:59:55 mc47 joins (~mc47@xmonad/TheMC47)
15:00:50 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
15:04:37 × mc47 quits (~mc47@xmonad/TheMC47) (Client Quit)
15:05:37 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
15:05:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds)
15:07:21 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
15:08:19 Sgeo joins (~Sgeo@user/sgeo)
15:09:06 hendursaga joins (~weechat@user/hendursaga)
15:09:40 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
15:09:42 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
15:09:49 kupi joins (uid212005@id-212005.hampstead.irccloud.com)
15:16:29 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
15:17:24 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
15:18:10 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) (Quit: WeeChat 2.8)
15:19:40 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
15:19:48 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
15:24:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
15:26:49 meltedbrain_y2k joins (~tekserf@94.73.36.197)
15:32:30 jstolarek joins (~jstolarek@137.220.120.162)
15:33:34 × xiongxin_ quits (~quassel@113.116.35.81) (Ping timeout: 258 seconds)
15:33:42 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
15:34:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
15:34:32 <sshine> ph88, you mean nested?
15:35:10 <sshine> ph88, https://www.fpcomplete.com/haskell/tutorial/monad-transformers/
15:36:30 lavaman joins (~lavaman@98.38.249.169)
15:36:54 <sshine> I wonder how many kittens god kills when someone writes a tutorial about transformers in particular.
15:38:04 <monochrom> I thought there has been too many blogs on that.
15:38:33 <monochrom> typeclassopedia has monad transformers
15:39:08 <maerwald> and it's a rather disappointing design pattern, is it not?
15:39:41 × k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60)
15:39:55 <monochrom> Yesterday I found a MuniHac 2020 talk explaining monad transformers too (and then it goes on to free monads and polysemy, basically exploring your options).
15:40:12 <monochrom> I don't find it disappointing.
15:41:07 <monochrom> I teach my students String -> Maybe (String, a) as a parser monad, but secretly it's a transformed monad, too.
15:41:15 <maerwald> Well, I don't miss them in any other language :p
15:41:19 <monochrom> StateT String Maybe
15:41:27 k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
15:42:13 <maerwald> exactly, state, reader etc are so easy to express without it
15:43:08 <maerwald> but given the ecosystem support, it's easier to just give in
15:44:17 <monochrom> No. Writing >>= by hand for even String -> Maybe (String, a) gets old pretty quickly.
15:44:55 <maerwald> it's our way to emulate OOP, because we want to hide the state object parameter
15:45:00 <monochrom> And the code really cries "I am a transformed monad".
15:45:57 <monochrom> Let me put it this way.
15:46:11 <monochrom> I don't teach monad transformers to students.
15:46:56 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:47:46 <monochrom> This allows me to give "challenging" assignments and exam questions that are like, "make this a monad: Bool -> Integer -> ([(a, Integer)], String)"
15:48:51 <janus> monochrom: is it this one ? https://www.youtube.com/watch?v=XZxNp7wgA4Q&t=9m20s "MuniHac 2020 Workshop: Michael Sperber - Control your Effects"
15:48:56 <monochrom> If only you knew monad transformers, those would be trivial, not challenging.
15:49:04 <monochrom> Yeah!
15:50:13 <monochrom> Also, I don't think OOP covers the Alternative-ness of my String -> Maybe (String, a) parser monad.
15:51:06 <monochrom> Only Haskell and Prolog come close to making choice a first-class thing.
15:51:23 × rkrishnan quits (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) (Ping timeout: 264 seconds)
15:51:26 <monochrom> I miss it in any other language.
15:52:06 <monochrom> The reason you don't miss it in other languages is because you haven't tried to express algorithms in terms of choice.
15:52:26 <monochrom> Sapir-Worf strikes once again.
15:52:54 <monochrom> If your vocab does not have <|>, you will never miss it, sure.
15:53:00 <maerwald> I've completed an entire computational geometry algorithms course in Haskell with zero monad transformers
15:53:27 <ph88> do i need a monad transformer when i want to combine blaze-html and state ?
15:53:29 × coot quits (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
15:53:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:54:21 <monochrom> I don't know about "need". You can always try StateT X <which monad blaze-html dictates>".
15:54:34 <monochrom> s/which/whichever/
15:54:55 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
15:57:20 <ph88> hmm i read here: It is worth noting that the Blaze builder overloads do-notation as some EDSLs do, but the Html type is not a monad. It is functionally a monoid.
15:57:23 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
15:57:26 <ph88> https://www.stephendiehl.com/posts/haskell_web.html
15:57:39 <ph88> i guess i can not use transformer when i don't have an inner monad
15:58:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
15:59:30 <monochrom> Syntactically, you can say that you would complete my course with zero monad transformers, too.
16:00:30 <monochrom> You can always handcode >>= for String -> Maybe (String, a), and then again for String -> Either Error (String, a), and then again for Bool -> Integer -> ([(a, Integer)], String).
16:00:38 <monochrom> Is that supposed to be healthy?
16:00:41 lbseale joins (~lbseale@user/ep1ctetus)
16:00:53 <maerwald> rust does fine with that
16:01:08 <monochrom> But rust is not in my course.
16:01:12 <maerwald> not massively more unergonomic
16:01:30 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
16:01:31 <maerwald> and the tooling works better, so that my code completion actually works :)
16:02:00 <maerwald> of course you lack all the neat stuff you can do with monadic combinators
16:02:02 <maerwald> but meh
16:02:32 <maerwald> I get much more angry about languages that don't provide my with proper ADTs
16:02:36 <monochrom> Well yeah I need <|>
16:02:41 <kronicmage> maerwald: whats wrong with hls completion? it works beautifully for me
16:02:48 <maerwald> kronicmage: not for me
16:02:54 <maerwald> probably due to TH
16:03:07 <maerwald> crashes a lot
16:03:14 <kronicmage> :(
16:03:26 <monochrom> which is not even a monadic combinator. It's an alternative combinator.
16:03:26 <maerwald> not that I miss TH in any other language ;)
16:03:52 <maerwald> TH is probably the least thought-through feature in Haskell
16:04:07 <geekosaur> you give it too much credit
16:04:19 geekosaur doesn't think it was thought through at all
16:04:55 <maerwald> also... do you really want access to the entire AST of the language?
16:05:00 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
16:05:05 <maerwald> and then, it's still not the actual AST
16:05:09 <maerwald> confusing
16:06:10 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
16:06:29 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
16:06:35 <gentauro> Does GHC run on the M1's?
16:06:37 <gentauro> :)
16:06:47 <ph88> my code type checks now using blaze-html and state https://bpa.st/4QHQ just that i had to give only 1 element on line 9 .. how can i go from a list of these [H.Html] pieces to one big one ? like roll-up as if i would have written it in do notation which each one on it's own line
16:06:54 <maerwald> gentauro: yes
16:06:56 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:07:16 <ph88> gentauro, would be cool if you can benchmark it
16:07:33 <maerwald> monochrom: well, I did use <|>
16:07:58 <maerwald> https://git.io/J6l6m
16:08:41 <maerwald> but attoparsecs parser isn't really a monad transformer
16:09:17 <gentauro> maerwald: nice
16:09:42 <maerwald> I doubt I would have cared whether it's <|> or some other combinator
16:09:48 <gentauro> ph88: by week 44 I will be able to (the M1 MAX) :)
16:10:25 <gentauro> ph88: somebody already ask me to benchmark `rust` x
16:10:27 <gentauro> xD
16:11:09 <monochrom> Sure, my Bool -> Integer -> ([(a, Integer)], String) montrosity is "not" a monad transformer either. Syntactically.
16:11:13 <monochrom> Or is it?
16:12:11 <monochrom> What does "is" mean?
16:12:47 <maerwald> monad transformer to me means ">>= is so overloaded with meaning that you end up reasoning about code operationally"
16:13:13 × poljar quits (~poljar@93-139-113-226.adsl.net.t-com.hr) (Remote host closed the connection)
16:13:36 poljar joins (~poljar@93-139-113-226.adsl.net.t-com.hr)
16:13:37 <maerwald> and then it becomes intellectual complexity you carry around, unless you're fine with "it roughly does this"
16:14:27 <maerwald> but when you get used to it, then it becomes fine too
16:14:30 <maerwald> you train it, so...
16:14:35 <maerwald> still doesn't make it a good thing
16:15:27 <maerwald> but that's the difference between "I use it" and "I miss this in other languages"
16:15:36 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
16:15:49 <monochrom> I am not sure that you, or anyone, ever do any better than "it roughly does this", in/for/with any language.
16:15:53 mc47 joins (~mc47@xmonad/TheMC47)
16:16:09 <maerwald> there are levels of uncertainty
16:16:33 <maerwald> ultimately, we're uncertain what our code does
16:16:39 jakalx joins (~jakalx@base.jakalx.net)
16:16:43 <maerwald> but that doesn't mean we have to throw away the nuances
16:16:45 <gentauro> maerwald: I tend to use `>>=` as the pipe operator in bash: `someLogic >>= \ value -> fooBar value`
16:16:54 <gentauro> I find it kind of readable
16:17:07 <gentauro> if you are in a monadic context and you use a lot of line-spaces
16:17:09 <gentauro> :)
16:17:27 <maerwald> would we really use monads that much if we didn't have do-notation?
16:17:30 <maerwald> Change my mind!
16:17:47 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
16:17:47 <monochrom> I would. I already did.
16:17:54 amk joins (~amk@109.255.169.126)
16:18:06 <geekosaur> I use >>= directly a fair amount, if it's short enough
16:18:20 <geekosaur> really I only use do because I hate long lines
16:18:39 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:19:20 <maerwald> what I'm getting at is... is it really monads that we care about or a concise way to describe sequential effect computations? If there was a different way to write and do it, so what?
16:19:28 Vajb joins (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
16:19:54 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
16:19:55 <monochrom> A concise way to describe effects.
16:20:30 <monochrom> Indeed I have found a way to stick to Alternative in parsers.
16:21:29 <geekosaur> if you're using monads just to use monads, you're doing something wrong
16:21:31 <monochrom> That doesn't change the real point behind my stance of taking monad transforming as useful though.
16:21:42 <monochrom> Because I'm just s/monad/alternative/
16:21:48 <geekosaur> but monads do useful things beyond just sequencing effects
16:22:07 <maerwald> monochrom: sure, but useful isn't elegant :p
16:22:19 × jstolarek quits (~jstolarek@137.220.120.162) (Quit: leaving)
16:22:50 <maerwald> monads aren't burritos
16:22:56 <maerwald> they are cows: useful, but not elegant
16:23:26 <monochrom> Handwriting <*> and <|> for String -> [(a, String)] is the inelegant choice. And the missing-the-forest-for-the-trees choice.
16:24:29 hyiltiz joins (~quassel@31.220.5.250)
16:24:38 <monochrom> Recognizing that it is a certain composition of StateT and [], and using that knowledge to connect the <*> and <|> of State with the <*> and <|> of [], is better, and useful to know.
16:24:46 <gentauro> I only used monads if I need to `take some decision` on the `outputted` value. Example: `fooBar >>= \ foo -> if foo then …`. Otherwise I opt for `<$>` or `_ <$> … <*>`
16:24:50 <monochrom> err
16:24:59 <maerwald> I dunno, maybe we'll figure out a better way to express effects/computations one day
16:25:12 <monochrom> using that knowledge to connect the <*> and <|> of String -> [(a, String)] to those of State and [].
16:25:19 <gentauro> maerwald: I like monadic effects
16:25:20 <maerwald> especially in light of combining them
16:25:37 <monochrom> There will always be better ways in the future.
16:25:52 <maerwald> and there I agree that algebraic effects seem saner, but also more intellectual complexity (polysemy and friends)
16:26:04 <maerwald> to the point that no one really understands semantics anymore either
16:26:31 <monochrom> For here and now, StateT String [] is the best known fit to my use case.
16:26:33 <maerwald> I haven't made up my mind about verbosity
16:26:52 <maerwald> I'm fine with verbose languages like rust and python... but damn they make my fingers hurt
16:27:32 <monochrom> Indeed StateT String [] is less remotely-abstract than all the more advanced theories. Given that you are against remotely-abstract as a principle.
16:28:48 <monochrom> StateT String [] is sufficiently concrete and sufficiently elegant for its purpose.
16:29:12 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
16:29:19 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:29:28 <maerwald> the thing with concise expressions is... how sharp can you mentally isolate the underlying concept. Sometimes you can't, but there's a way to express it very concise regardless
16:29:30 <maerwald> what to do?
16:29:33 × ph88 quits (~ph88@2a02:8109:9e00:7e5c::3d56) (Remote host closed the connection)
16:29:45 azimut joins (~azimut@gateway/tor-sasl/azimut)
16:30:32 <maerwald> while... once you got used to verbose code (and there are a couple of rules everyone follows), then reading verbose code can be very efficient
16:30:55 <maerwald> (like not introducing new variables in the middle of a C function)
16:31:10 <monochrom> I do that all the time. Bite me.
16:31:49 <monochrom> I can be talked into "if you do that, add { } around its real scope" though.
16:32:24 <monochrom> But I will refuse "there are only two levels, top and function". Because there aren't.
16:32:26 <maerwald> ok, I'm off buying soap (need to clean myself after this conversation)
16:32:28 <maerwald> :D
16:33:02 <monochrom> There is nothing wrong with "for (int i = ...) { int s = 0; ... }"
16:33:14 <maerwald> I think I'd allow that exception
16:33:32 <maerwald> also, in rust it's a bit harder to follow this rule
16:33:53 <maerwald> because of all the shenanigans you have to do to trick the borrow checker into thinking your code is safe
16:34:35 <monochrom> The only thing you can complain about is if I have "x = 0; int y; ...", it is a bit harder to spot the introduction of y, and it's also a bit harder to spot the end of relevance of y.
16:35:14 <monochrom> For the former, I have blank lines already. For the latter, that's why I offer "x = 0; { int y; ... } ..."
16:35:34 <monochrom> That rule is stupid.
16:36:02 <monochrom> I can take everything you said and say it about that rule, too.
16:36:08 segfaultfizzbuzz joins (~segfaultf@135-180-0-138.static.sonic.net)
16:36:31 <maerwald[m]> That was just an example :D
16:36:35 fendor joins (~fendor@77.119.169.61.wireless.dyn.drei.com)
16:36:59 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 264 seconds)
16:37:04 lavaman joins (~lavaman@98.38.249.169)
16:37:36 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
16:38:27 <maerwald[m]> My point was that expressing things, that you can't easily isolate mentally, in a concise way is an open question
16:38:41 <maerwald[m]> As to whether that's a good idea
16:38:47 <maerwald[m]> I don't really know
16:38:58 <monochrom> Oh sure, I balance many factors.
16:39:23 <maerwald[m]> My mtl code usually ends up like that: a mess.
16:39:34 <monochrom> Mine doesn't.
16:39:46 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
16:39:54 <maerwald[m]> You look at the type signature and go "yeah right, whatever"
16:40:54 <monochrom> I don't use MonadState all that much either, if that's what you mean.
16:41:25 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
16:41:25 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
16:41:42 <maerwald[m]> MonadIO, MonadUnliftIO, MonadFail, MonadMask, MonadThrow, MonadMe...
16:41:50 <monochrom> But I have "eof :: Parser ()" and Parser is either "newtype Parser a = P (String -> Maybe (String, a))" or "newtype Parser a = P (StateT String Maybe a)"
16:42:02 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
16:42:36 <monochrom> And I would really love to use the latter in my course if I had time to teach StateT.
16:43:15 <monochrom> Then again, if I did that, I would run out of assignment and exam questions.
16:43:34 <monochrom> In the same sense as:
16:43:43 <maerwald[m]> I forgot obscure LabelOptics
16:45:12 <monochrom> Suppose a teacher concealed "x+y = y+x" from you. Then they would have a larger pool of homework questions for you, for example they could put both "34 + 57 = ?" and "57 + 34 = ?" on the same exam, even right next to each other.
16:45:58 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
16:50:25 mastarija joins (~mastarija@31.217.25.149)
16:50:40 <maerwald[m]> So does flexibility to add effects freely lead to better or worse design? And what about custom monad newtypes, like `App`? Are they really better?
16:50:48 <maerwald[m]> Questions
16:51:23 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
16:52:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:53:47 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
16:55:11 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
16:56:00 × Vajb quits (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
16:56:32 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:58:35 × mbuf quits (~Shakthi@27.58.140.141) (Quit: Leaving)
17:00:41 marinelli joins (~marinelli@gateway/tor-sasl/marinelli)
17:01:34 mastarija_ joins (~mastarija@31.217.25.149)
17:01:53 × mastarija_ quits (~mastarija@31.217.25.149) (Client Quit)
17:02:00 × mastarija quits (~mastarija@31.217.25.149) (Quit: Leaving)
17:02:18 emf joins (~emf@2620:10d:c090:400::5:c0de)
17:03:27 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
17:03:47 alzgh joins (~alzgh@user/alzgh)
17:08:29 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
17:08:54 geekosaur joins (~geekosaur@xmonad/geekosaur)
17:12:43 lavaman joins (~lavaman@98.38.249.169)
17:13:19 × xff0x quits (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) (Ping timeout: 265 seconds)
17:13:38 hyiltiz joins (~quassel@31.220.5.250)
17:15:28 betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be)
17:16:39 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
17:17:23 xff0x joins (~xff0x@2001:1a81:5338:8400:382c:44d1:e85b:95f9)
17:23:12 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
17:23:33 LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao)
17:26:07 fendor_ joins (~fendor@77.119.200.149.wireless.dyn.drei.com)
17:26:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
17:27:14 × ubert2 quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Remote host closed the connection)
17:27:14 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
17:28:18 × fendor quits (~fendor@77.119.169.61.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
17:29:37 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: No route to host)
17:30:05 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
17:31:51 mmhat joins (~mmh@55d45bcb.access.ecotel.net)
17:35:17 _________ is now known as __________
17:35:19 __________ is now known as noodly
17:35:23 noodly is now known as _________
17:41:50 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
17:41:56 fendor__ joins (~fendor@212095005159.public.telering.at)
17:42:22 × fendor_ quits (~fendor@77.119.200.149.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
17:43:45 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:46:26 × kuribas quits (~user@ptr-25vy0i72e2u2h548zvl.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:50:09 coot joins (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl)
17:51:07 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
17:55:34 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
17:56:33 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 258 seconds)
17:58:50 Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
17:59:19 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
18:05:10 × peterhil quits (~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) (Ping timeout: 260 seconds)
18:12:44 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
18:12:59 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
18:14:16 fendor_ joins (~fendor@178.115.49.60.wireless.dyn.drei.com)
18:15:36 × Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection)
18:15:36 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
18:15:44 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
18:16:11 Null_A joins (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a)
18:16:50 × fendor__ quits (~fendor@212095005159.public.telering.at) (Ping timeout: 260 seconds)
18:20:47 × Null_A quits (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Ping timeout: 264 seconds)
18:23:18 Null_A joins (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a)
18:24:46 × marinelli quits (~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
18:25:11 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
18:25:59 ubert joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
18:28:03 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
18:36:27 econo joins (uid147250@user/econo)
18:37:16 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds)
18:38:43 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds)
18:53:45 <zzz> class Commutative (f :: a -> b -> c) where ?
18:54:19 <monochrom> no understand
18:54:37 <awpr> `swap :: f a b -> f b a` + law that `swap . swap` is `id`?
18:54:50 <awpr> although s/c/Type/ I think
18:55:01 <[exa]> I vote for `commute`
18:55:04 <zzz> it's not supposed to be understood. just writing nonsense
18:55:26 <zzz> [exa]: commute (f a b) = f b a ?
18:55:29 <awpr> although it can't have poly-kinds with different kinds for the two sides either
18:55:38 <awpr> `f :: k -> k -> Type`
18:55:59 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
18:57:20 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
18:57:29 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
18:58:36 lavaman joins (~lavaman@98.38.249.169)
19:02:22 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
19:03:02 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
19:04:35 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
19:08:56 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
19:10:54 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
19:11:24 <xerox> does anybody know how to find which branch/commit made up the ghc release 9.2.0.20210821 ?
19:11:56 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
19:12:05 <geekosaur> you can query git log by date, that should at least narrow it down
19:12:57 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
19:13:11 <geekosaur> the branch should be the 9.2 branch
19:13:18 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
19:13:32 <xerox> the 9.2 branch does not build for me, 0.2 seconds into make I get this https://i.imgur.com/DJOMeiZ.png
19:14:14 <geekosaur> that one you'll have to ask about in #ghc
19:14:25 <xerox> but I guessed since that one built... :)
19:14:44 <xerox> nothing comes up green with a search like this https://gitlab.haskell.org/ghc/ghc/-/tags?sort=updated_desc&search=9.2
19:14:46 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
19:15:00 <xerox> nor on the branches
19:15:28 <xerox> maerwald: how did you figure out that one in particular built, so you could add it to ghcup?
19:16:21 lavaman joins (~lavaman@98.38.249.169)
19:19:04 × Null_A quits (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Remote host closed the connection)
19:20:41 hyiltiz joins (~quassel@31.220.5.250)
19:22:25 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds)
19:23:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:27:51 amirouche is now known as amazigh
19:36:43 <maerwald> what?
19:37:41 <maerwald> https://downloads.haskell.org/~ghc/9.2.1-rc1/
19:39:44 <xerox> ah that's what it is
19:39:57 <maerwald> probably this https://gitlab.haskell.org/ghc/ghc/-/pipelines/33913
19:40:06 <maerwald> go to the pipelines and click on tags
19:40:11 <maerwald> https://gitlab.haskell.org/ghc/ghc/-/pipelines?scope=tags&page=1
19:40:12 <xerox> maybe I'm asking for trouble using *that* to build another ghc
19:40:33 <xerox> everything fails with that error about safe haskell
19:41:05 <monochrom> Is that why 9.2 is stalled? That no one knows how to build it now? :)
19:42:02 <xerox> using 8.10.7 seems to be liking at least starting to build master, yay
19:42:25 <maerwald> xerox: you usually go one major version back
19:42:29 <maerwald> for building
19:43:00 <xerox> didn't know that!
19:43:37 Null_A joins (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a)
19:44:20 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3)
19:44:21 <geekosaur> 1-2 versions currently accepted. using 9.2 to build 9.2 is I think known not to work
19:44:30 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Remote host closed the connection)
19:44:31 <geekosaur> so 9.0.1 or 8.10.7
19:44:38 <xerox> how peculiar
19:45:02 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3)
19:45:06 <xerox> does this mean you have to do a chain of compilations if you are stuck with having an old binary, or no binary (yuck!)
19:45:28 <geekosaur> yes
19:45:31 <xerox> wow
19:46:00 <geekosaur> and I think there's no way to bootstrap from scratch any more because yoou need to find a working hbc binary to start the bootstrap chain
19:46:37 <geekosaur> the alternative is -funregisterised which outputs ANSI C
19:47:30 <geekosaur> and requires a custom built compiler to enable -funregisterised, since release compilers have it disabled
19:47:43 × k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60)
19:47:50 <xerox> but can you build such custom comppiler
19:48:00 evocatus joins (~evocatus@84.51.113.13)
19:49:14 <geekosaur> you'd start on a platform with a working ghc and use that to build a dev compiler that supports -funregisterised, then use that to build ghc again with -funregisterised, then collect the output sources and take them to the target machine
19:49:20 <geekosaur> it's a royal pain
19:49:25 × o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Ping timeout: 252 seconds)
19:50:11 <geekosaur> a newer way if LLVM is supported is compile with -fllvm -keep-llvm-files (I think that's the option) and run llc/opt/lld on the target
19:50:37 <xerox> that seems nice
19:50:40 <geekosaur> basically ghc is really not friendly to this kind of thing currently
19:50:54 <geekosaur> there's supposedly some work going on to improve things a bit
19:52:31 × nckx quits (~nckx@tobias.gr) (Quit: Updating my Guix System <https://guix.gnu.org>)
19:52:33 <geekosaur> but this general issue is a problem with any self-hosted compiler. I think you have to dig up some ancient gcc that could be built with non-gcc (1.40?) to bootstrap a current one from scratch
19:53:18 × Null_A quits (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Ping timeout: 265 seconds)
19:54:08 lionrouge_ joins (~evocatus@84.51.113.13)
19:54:33 × lionrouge_ quits (~evocatus@84.51.113.13) (Remote host closed the connection)
19:54:43 nckx joins (~nckx@tobias.gr)
19:55:23 × wonko quits (~wjc@62.115.229.50) (Ping timeout: 258 seconds)
19:57:00 evocatus_ joins (~evocatus@84.51.113.13)
19:57:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
19:58:48 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
20:04:41 Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
20:05:34 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 260 seconds)
20:06:20 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
20:07:24 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
20:07:48 juhp joins (~juhp@128.106.188.220)
20:09:35 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
20:12:31 × alx741 quits (~alx741@186.178.108.68) (Ping timeout: 252 seconds)
20:12:46 acidjnk_new joins (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de)
20:14:51 <xerox> Build completed in 28m59s -- there we go
20:15:39 <shapr> 4883 weeds *cries*
20:15:51 <shapr> that's from https://github.com/ocharles/weeder
20:16:51 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 258 seconds)
20:17:01 k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
20:18:43 mikoto-chan joins (~mikoto-ch@185.237.102.114)
20:19:19 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:20:07 <sshine> I'm trying to add a package to stackage, but I'm told that sqlite-simple isn't found: https://gist.github.com/sshine/d3a715326791746eb20d7bc857f4686e -- it's kinda strange, because if I look up that package, it does appear to be in nightly-2021-06-14 and in lts-18.13. but apparently not in nightly-2021-10-19. I wonder how I find out why.
20:20:09 o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3)
20:20:16 × _xor quits (~xor@72.49.199.147) (Read error: Connection reset by peer)
20:20:45 <juri_> ugh. property tests and doubles are sadness.
20:21:02 <sshine> juri_, doubles are sadness.
20:21:14 <Hecate> sadness.
20:21:50 <juri_> Hecate: you win.
20:22:46 <sshine> ha, I was going to demonstrate that at least you can prove that anything plus NaN is NaN, but you can't, because it isn't equal to itself.
20:23:28 × evocatus_ quits (~evocatus@84.51.113.13) (Quit: Leaving)
20:23:33 <sshine> and saying it isn't equal to NaN is about as trivial as saying it isn't equal to anything else.
20:23:35 × evocatus quits (~evocatus@84.51.113.13) (Quit: Leaving)
20:23:37 <awpr> > :t isNaN -- can do this though
20:23:39 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
20:23:46 <sshine> awpr, nice.
20:23:48 <geekosaur> :t isNaN
20:23:49 <lambdabot> RealFloat a => a -> Bool
20:25:10 elmoloko joins (~Adium@2600:6c64:4a7f:faa6:2863:d742:7416:5b9e)
20:26:03 _xor joins (~xor@72.49.199.147)
20:26:30 alx741 joins (~alx741@186.178.109.50)
20:27:52 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
20:29:06 peterhil joins (~peterhil@mobile-access-56734e-227.dhcp.inet.fi)
20:29:09 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
20:30:16 × mikoto-chan quits (~mikoto-ch@185.237.102.114) (Ping timeout: 258 seconds)
20:32:01 mikoto-chan joins (~mikoto-ch@185.237.102.122)
20:32:25 × mikoto-chan quits (~mikoto-ch@185.237.102.122) (Client Quit)
20:37:04 × connrs quits (~connrs@conners.plus.com) (Quit: ZNC 1.8.2 - https://znc.in)
20:38:01 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:38:14 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
20:38:17 connrs joins (~connrs@conners.plus.com)
20:39:42 random-jellyfish joins (~random-je@user/random-jellyfish)
20:46:24 acidjnk_new3 joins (~acidjnk@p200300d0c703cb879d3ec1aa44300f05.dip0.t-ipconnect.de)
20:46:47 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
20:49:49 × acidjnk_new quits (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
20:54:00 fawful joins (~guy@c-76-104-217-93.hsd1.wa.comcast.net)
20:55:35 <monochrom> > isNan (sqrt (-1))
20:55:37 <lambdabot> error:
20:55:37 <lambdabot> • Variable not in scope: isNan :: t0 -> t
20:55:37 <lambdabot> • Perhaps you meant ‘isNaN’ (imported from Prelude)
20:55:45 <monochrom> > isNaN (sqrt (-1))
20:55:47 <lambdabot> True
20:55:51 <monochrom> > isNaN (1 + sqrt (-1))
20:55:52 <lambdabot> True
20:55:54 <monochrom> :)
20:56:11 <fawful> :)
20:57:28 <monochrom> I am not very sympathetic to "you can't use (==)". If I have x :: [Int->Int], you can't use "x == []" either. You are supposed to use null.
21:00:33 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:02:24 <sm> sshine: you can look at https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml , eg for a line like https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml#L6535
21:02:52 <sm> and there might be an issue discussing it
21:04:50 × peterhil quits (~peterhil@mobile-access-56734e-227.dhcp.inet.fi) (Ping timeout: 260 seconds)
21:04:53 × Megant quits (megant@user/megant) (Ping timeout: 264 seconds)
21:04:53 × Moyst quits (~moyst@user/moyst) (Ping timeout: 264 seconds)
21:06:22 aln448 joins (~aln448@2a00:23c7:3480:b700:fdb9:39e2:1024:88b1)
21:06:32 acidjnk_new joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
21:07:23 × Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
21:07:40 <aln448> fluent in maths and functional programming. wrote a postgrad thesis on a maths topic in haskell, but haven't touched and barely thought about FP in close to a decade. looking to play with it again, but can't think of a toy project to implement - any ideas?
21:07:54 <sm> (I didn't find it, otherwise dig in the history to find out who done it)
21:07:58 Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
21:08:15 Moyst joins (~moyst@user/moyst)
21:08:40 <aln448> not looking for anything flashy, no 'how to develop a game in x days' - i used to enjoy solving maths problems, deriving logic from first principles (played around with idris etc a lot)
21:08:58 <aln448> agda with few to no libraries, etc
21:09:08 <fawful> :)
21:09:22 <aln448> can anyone suggest something fun that might pique my interest and give me a reason to re-learn FP paradigm?
21:09:31 <fawful> do you like visual art
21:09:32 <sm> project euler problems
21:09:45 × acidjnk_new3 quits (~acidjnk@p200300d0c703cb879d3ec1aa44300f05.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
21:09:56 <aln448> fawful: i'm afraid not
21:10:16 <fawful> I find creative projects to motivate me, but you might be different
21:10:24 × Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
21:10:28 <aln448> sm: have done this in a dozen programming languages a dozen times, they get boring. i'd like something that allows me to rely on my own intuition and be a little creative
21:10:32 <monochrom> Parsing or interpreting of a toy language.
21:10:39 Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
21:10:57 <sm> aln448: ok, then the christmas puzzles.. darn what's it called
21:11:03 <fawful> try to create a mind out of code
21:11:08 <c_wraith> advent of code
21:11:18 <aln448> cannot count how many times i've started writing a lisp but gotten bored half-way through :( been a long time since i've done it functionally, but still looking for something more 'fresh'
21:11:22 <sm> ^^
21:11:22 <fawful> maybe you will succeed who knows
21:11:25 <aln448> advent of code is coming up, that's right
21:11:29 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:11:41 <monochrom> No, interpreting lisp is boring. Try interpreting a toy prolog.
21:11:55 <c_wraith> if you go back to the year with intcode and try to build your interpreter in a really reusable way, that's an interesting challenge.
21:12:18 <geekosaur> interpret a toy sml and confuse everyone :þ
21:12:22 <aln448> hah
21:12:33 <monochrom> intepret C, and turn the table around :)
21:12:43 <aln448> was thinking maybe a static site generator, pushing the 'practical' element here
21:12:45 <monochrom> In fact it would turn two tables around.
21:13:07 <awpr> or a language with linear logic at its core. that's similar enough to Haskell's core to have something to draw inspiration from, but novel enough to have room for creativity
21:13:15 <aln448> would be interested in anything involved in prop/first/maybe even second (been a while) level logic though
21:13:38 <aln448> i kinda missed out on hott the first time around and from blog posts at least, it sounds interesting
21:13:46 <monochrom> theorem prover?
21:13:51 <sm> if you want practical, how about some new accounting/investing reports for hledger
21:14:26 <monochrom> HOL4 is a theorem prover written in SML. So implement an SML interpreter, there you have it?
21:15:34 <monochrom> OTOH a theorem prover in Haskell directly has its upsides too. In particular, tactical theorem proving is a monad. HOL4 misses out on that.
21:16:48 <aln448> perhaps i could implement prelude in some other language?
21:16:58 <monochrom> StateT Goal [] to be exact.
21:18:55 <monochrom> Err oops, no, more complicated than StateT Goal []
21:19:35 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
21:19:57 <aln448> thanks for the thoughts here guys, some nice ideas
21:20:35 <geekosaur> you could also consider contributing to a project; hledger was already mentioned, and xmonad-contrib is always open to new submissions
21:21:44 <aln448> i'm familiar with xmonad, and daily-drive dwm, have contributed a bunch of stuff (C though)
21:22:02 <aln448> that's perhaps a nice idea - i'm sure there are some plugins for dwm that i could port to xmonad
21:24:55 × cjay quits (cjay@nerdbox.nerd2nerd.org) (Quit: peepoLeave)
21:25:15 cjay joins (cjay@nerdbox.nerd2nerd.org)
21:26:04 boxscape_ joins (~boxscape_@p54a3581e.dip0.t-ipconnect.de)
21:26:14 <aln448> thanks, people - i should head off now, but one last question given i'm here and there's a good chance someone here will know
21:27:19 <aln448> is conor mcbride still active/around? last i heard from a friend was that he was having some health problems, but the only contact i had with him was on twitter, and i believe he was banned/left/deactivated from the platform a while back
21:31:05 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
21:31:16 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
21:31:32 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
21:31:45 × coot quits (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
21:35:39 × Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
21:35:46 × fendor_ quits (~fendor@178.115.49.60.wireless.dyn.drei.com) (Remote host closed the connection)
21:40:27 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
21:42:14 × michalz quits (~michalz@185.246.204.77) (Remote host closed the connection)
21:43:16 Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
21:44:32 <dsal> aln448: A couple years ago AoC was basically a course in interpretation and stuff. I tend to write more parsers than necessary, but you had to build an interpreter, then you'd get puzzles that were built for programs your interpreter's language and you had to build solutions on top of that runtime with foreign programs. It was pretty good.
21:44:42 <dsal> I think a few from last year were solved almost entirely in the parser.
21:45:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
21:49:02 pavonia joins (~user@user/siracusa)
21:49:38 × slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 265 seconds)
21:53:04 × pmk quits (~user@2a02:587:9418:a234:40de:ca53:4e3:4a70) (Ping timeout: 258 seconds)
21:54:12 × ubert quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Remote host closed the connection)
21:59:28 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
22:00:02 burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk)
22:00:40 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
22:00:45 × jess quits (~jess@libera/staff/jess) (Quit: Lost terminal)
22:00:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:01:10 jess joins (~jess@libera/staff/jess)
22:02:00 × max22- quits (~maxime@2a01cb0883359800342ef13833bd6f3b.ipv6.abo.wanadoo.fr) (Quit: Leaving)
22:04:34 × burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
22:07:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
22:07:44 × aln448 quits (~aln448@2a00:23c7:3480:b700:fdb9:39e2:1024:88b1) (Quit: Client closed)
22:08:09 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
22:11:00 ph88 joins (~ph88@2a02:8109:9e00:7e5c::3d56)
22:11:57 × meltedbrain_y2k quits (~tekserf@94.73.36.197) (Read error: Connection reset by peer)
22:13:56 <janus> mcbride is still active: https://github.com/pigworker
22:17:03 × k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60)
22:17:07 <shapr> What's the status of GHC on M1 macs? Does anyone know if it's fully supported?
22:17:40 <shapr> Is there anything more recent than https://www.haskell.org/ghc/blog/20210309-apple-m1-story.html ?
22:17:40 <geekosaur> via llvm only in 8.10.7, to be fully supported in 9.2.1
22:17:41 <dsal> shapr: I was able to build most of my projects.
22:17:49 <shapr> dsal: most?
22:17:57 <shapr> We have a 500kloc codebase, most worries me
22:18:10 <dsal> The latest stack LTS has an older `network` library. I didn't go through and redo them all.
22:18:18 <dsal> But my gopro project has all the deps and that one worked.
22:18:30 <dsal> /Users/dustin/.local/bin/gopro: Mach-O 64-bit executable arm64
22:19:33 <dsal> `network` was the only thing I tripped up on, and it was already fixed.
22:19:39 <dsal> Also, there are a bunch of annoying warnings while stuff builds.
22:20:38 <dsal> I just found out I can replace my mac with one that's about the same size, but with 10 cores and 64GB of RAM…
22:23:13 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:24:49 <shapr> dsal: thanks for the info
22:25:28 <dsal> I switched my nix over two days ago to try that, so it's fresh on my mind. :)
22:26:26 <dsal> I switched it back, though. It's a little annoying to override `network` just for that.
22:28:19 <shapr> dsal: are you using ghc 8.10.7 ? or ghc 9?
22:31:35 Megant joins (megant@user/megant)
22:33:31 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
22:33:48 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
22:34:05 × Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
22:34:19 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Read error: Connection reset by peer)
22:34:39 <dsal> I just ran stack LTS-18.13
22:35:33 <dsal> LTS 18.13 for ghc-8.10.7
22:35:44 <dsal> I may have tried a nightly. I'll do that real quick and see what happens.
22:36:38 <dsal> It's downloading 9.0.1… Nothing can go wrong now.
22:39:22 slack1256 joins (~slack1256@45.4.2.52)
22:40:00 × theproffesor quits (~theproffe@user/theproffesor) (Ping timeout: 268 seconds)
22:42:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:42:51 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
22:46:34 × slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 260 seconds)
22:47:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
22:48:20 vicfred joins (~vicfred@user/vicfred)
22:49:18 brainfreeze joins (~brainfree@2a03:1b20:4:f011::20d)
22:51:23 × ArtVandelayer quits (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 264 seconds)
22:52:04 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:54:14 × voldial quits (~user@195.179.201.175) (Changing host)
22:54:14 voldial joins (~user@user/voldial)
22:57:56 × tomsmeding quits (~tomsmedin@tomsmeding.com) (Ping timeout: 265 seconds)
22:58:37 × beaky quits (~beaky@198.211.118.219) (Ping timeout: 252 seconds)
22:59:00 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
22:59:14 × quintasan quits (~quassel@quintasan.pl) (Ping timeout: 265 seconds)
22:59:23 × Dykam quits (Dykam@dykam.nl) (Ping timeout: 265 seconds)
22:59:31 × synthmeat quits (~synthmeat@user/synthmeat) (Ping timeout: 268 seconds)
22:59:34 voldial parts (~user@user/voldial) (WeeChat 1.6)
23:00:35 dsrt^ joins (~dsrt@68.101.53.15)
23:02:42 <shapr> dsal: is it still downloading?
23:04:08 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
23:04:30 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
23:09:04 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
23:09:37 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
23:09:57 alzgh joins (~alzgh@user/alzgh)
23:10:02 <Cajun> so im looking into a small project of changing a program from a pretty unorganized mtl stack (abusing a lot of state changing stuff) to some effect system and im wondering which library is the library of choice? fused-effects, polysemy, and freer-simple all look like good options
23:11:08 <Cajun> s/?/.
23:13:30 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
23:18:27 <oak-> I think polysemy had some problems with performance in the past (if that is a concern), but I'm not sure if it is already fixed. I think in the past it needed some GHC-patch
23:19:05 × elmoloko quits (~Adium@2600:6c64:4a7f:faa6:2863:d742:7416:5b9e) (Quit: Leaving.)
23:19:57 <ph88> I have a function [b] -> (Maybe a, [b]) what helper function can i use to keep my function running on [b] (using the output again as input) until i find Nothing and then returning ([Just a], [b]). I don't think i can use a normal foldl' here because the input is determined from the output of previous call
23:21:07 <geekosaur> unfoldr?
23:23:10 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
23:23:49 <Cajun> well what inspired the project was this (https://reasonablypolymorphic.com/blog/porting-to-polysemy/index.html) post, and it seems like a very interesting system. i have no performance concerns (as long as it can still work at ~13fps in a console window, not a high bar)
23:27:25 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
23:27:41 synthmeat joins (~synthmeat@user/synthmeat)
23:27:45 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
23:27:54 tomsmeding joins (~tomsmedin@tomsmeding.com)
23:28:29 quintasan joins (~quassel@quintasan.pl)
23:28:41 <ph88> geekosaur, that function looks pretty neat thanks
23:36:47 hexology joins (~hexology@user/hexology)
23:39:14 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
23:42:01 ArtVandelayer joins (~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
23:42:10 beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001)
23:43:43 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
23:43:58 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
23:44:13 lavaman joins (~lavaman@98.38.249.169)
23:47:16 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
23:48:49 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:49:01 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
23:49:37 pragma- joins (~chaos@user/pragmatic-chaos)
23:49:41 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds)
23:50:06 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
23:52:29 sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
23:52:42 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal)
23:53:10 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
23:54:06 × pragma- quits (~chaos@user/pragmatic-chaos) (Client Quit)
23:54:38 <dsal> shapr: oops. it broke because of libs. Got a call. Gonna try again.
23:55:35 pragma- joins (~chaos@user/pragmatic-chaos)
23:55:51 <dsal> Oh yes. I remember now.
23:55:59 <shapr> dsal: oh?
23:56:43 <dsal> Pages of this sort of thing: https://usercontent.irccloud-cdn.com/file/sZpPstHP/errs.png
23:56:52 × ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds)
23:58:02 × sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
23:58:31 ystael joins (~ystael@user/ystael)
23:59:39 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds)

All times are in UTC on 2021-10-19.