2021/10/19

2021-10-19 00:02:58 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
2021-10-19 00:03:54 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 00:04:42 +0200 <Axman6> @djinn ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((forall a. a -> a) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int) -> Int
2021-10-19 00:04:58 +0200 <lambdabot> Djinn command failed: <<timeout>>
2021-10-19 00:05:37 +0200 <hpc> haha
2021-10-19 00:05:43 +0200 <hpc> i have never seen djinn time out before
2021-10-19 00:08:26 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 245 seconds)
2021-10-19 00:10:11 +0200wroathe(~wroathe@50-205-197-50-static.hfc.comcastbusiness.net)
2021-10-19 00:10:11 +0200wroathe(~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) (Changing host)
2021-10-19 00:10:11 +0200wroathe(~wroathe@user/wroathe)
2021-10-19 00:11:22 +0200 <DigitalKiwi> Axman6: lol that reminds me of a python program that will segfault
2021-10-19 00:12:06 +0200michalz(~michalz@185.246.204.87) (Remote host closed the connection)
2021-10-19 00:12:22 +0200Morrow(~Morrow@147.161.13.214) (Ping timeout: 260 seconds)
2021-10-19 00:15:07 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
2021-10-19 00:15:26 +0200 <koz> Suppose I have a GADT 'trapping' a type variable 'a'. If I pattern-match on said GADT to reveal that 'a', how do I refer to it for a type application?
2021-10-19 00:15:33 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-10-19 00:16:15 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255) (Remote host closed the connection)
2021-10-19 00:16:36 +0200 <awpr> currently, you have to get a handle on it by a signature in the pattern, with `ScopedTypeVariables`, or otherwise do something with a type that locks down that existential somehow
2021-10-19 00:16:56 +0200 <monochrom> \∩/ Richard Eisenberg is still using Hugs to test out new features!
2021-10-19 00:17:03 +0200 <awpr> there have been rumblings about allowing `TypeApplications` in patterns, which would be awesome, but not sure if it's gone anywhere
2021-10-19 00:17:16 +0200 <c_wraith> awpr: it's in the 9.2 release candidate and works fine
2021-10-19 00:17:18 +0200 <koz> awpr: How would that signature even look?
2021-10-19 00:17:20 +0200Morrow(~Morrow@147.161.13.214)
2021-10-19 00:18:21 +0200 <awpr> `data Thing where Thing :: forall a. Proxy a -> Thing`
2021-10-19 00:18:21 +0200 <awpr> `\ (Thing (_ :: Proxy a)) -> doSomething @a`
2021-10-19 00:18:33 +0200 <koz> Ah.
2021-10-19 00:18:44 +0200 <awpr> c_wraith: awesome, I've been looking forward to this feature
2021-10-19 00:18:52 +0200 <DigitalKiwi> ghc -e "putStrLn (replicate 100 '(') <> putStrLn (replicate 100 ')')"|python3 <-- the program
2021-10-19 00:19:22 +0200 <awpr> without it, it's not possible to get at an existential like `a` in `data Thing = Monoid a => Thing`
2021-10-19 00:20:58 +0200 <c_wraith> One of several reasons I want GHC 9.2 to get released :)
2021-10-19 00:21:03 +0200 <DigitalKiwi> how many parens you need to segfault depend on what version of python you are using lol and it might be fixed in 3.9 hmm
2021-10-19 00:21:37 +0200 <awpr> oh right, s/ve been/m still/
2021-10-19 00:21:41 +0200 <jackhill> Franciman, geekosaur: sorry, I got distracted and wondered off. I think you gave me some good leads, which I'll envestigate later, thanks! Wrapper script is possible, but kludge, so I hopped to avoid it. Yes, the idea is to have ghc find the toolchain it wants directly from the store, and do it in such a way that Guix can see that reference.
2021-10-19 00:22:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255)
2021-10-19 00:22:18 +0200 <jackhill> I looked for hints from Nix, but (maybe my Nix reading isn't good enough) didn't see any.
2021-10-19 00:22:26 +0200 <geekosaur> ghc will use whatebver toolchain it is presented with, so it's up to guix to select and rpesent one. which one might be a guix-level config option
2021-10-19 00:23:30 +0200 <geekosaur> then just pass the appropriate CC=.. to both build and install configure scripts as part of building/installing ghc (which again is up to guix, not to you)
2021-10-19 00:23:56 +0200 <jackhill> yeah, I bet we're missing it for the install configure scripts, since all the build time stuff works
2021-10-19 00:24:46 +0200 <jackhill> geekosaur: right. Well it's up to me insofar as I'm trying to teach Guix how to do it :)
2021-10-19 00:28:42 +0200mikoto-chan(~mikoto-ch@185.237.102.123) (Ping timeout: 260 seconds)
2021-10-19 00:30:55 +0200 <geekosaur> mm. I'm still thinking you just want to expose the whole toolchain. because even if you get the simple cases working, you'llk still trip over it with inline-c
2021-10-19 00:31:30 +0200Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-10-19 00:32:16 +0200 <Axman6> hpc: yeah, I'm amazed. I rememebr back in the day type checking exponentially large expressions and that causing issues
2021-10-19 00:36:44 +0200 <Axman6> Who runs yahb?
2021-10-19 00:37:26 +0200greyrat(~greyrat@ip202.ip-51-178-215.eu)
2021-10-19 00:37:49 +0200 <geekosaur> mniip
2021-10-19 00:38:04 +0200 <mniip> hi
2021-10-19 00:43:38 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 260 seconds)
2021-10-19 00:44:41 +0200burnsidesLlama(~burnsides@dhcp168-043.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-19 00:46:18 +0200 <jackhill> geekosaur: that's doable it that's what's expected.
2021-10-19 00:47:22 +0200glassy(~glassy@92.40.175.103.threembb.co.uk) (Ping timeout: 260 seconds)
2021-10-19 00:47:58 +0200 <geekosaur> yeh, I'm suspecting that and probably cabal c-sources won't consult ghc to see what c compiler it expects, you'll have to arrange for it to be in $PATH some other way
2021-10-19 00:49:27 +0200ph88(~ph88@2a02:8109:9e00:7e5c::3d56) (Remote host closed the connection)
2021-10-19 00:49:51 +0200ph88(~ph88@2a02:8109:9e00:7e5c::3d56)
2021-10-19 00:50:23 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 258 seconds)
2021-10-19 00:53:45 +0200max22-(~maxime@2a01cb088335980099ed81e6a8bd9a3f.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-10-19 00:56:10 +0200Morrow(~Morrow@147.161.13.214) (Read error: Connection reset by peer)
2021-10-19 00:59:20 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 01:02:05 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 01:02:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
2021-10-19 01:03:34 +0200wroathe(~wroathe@96-88-30-181-static.hfc.comcastbusiness.net)
2021-10-19 01:03:34 +0200wroathe(~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Changing host)
2021-10-19 01:03:34 +0200wroathe(~wroathe@user/wroathe)
2021-10-19 01:04:32 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-10-19 01:06:46 +0200azeem(~azeem@2a00:801:237:7bcf:1c96:8993:d67f:c459) (Ping timeout: 245 seconds)
2021-10-19 01:06:47 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2) (Ping timeout: 240 seconds)
2021-10-19 01:06:54 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2)
2021-10-19 01:09:05 +0200 <Axman6> DigitalKiwi: Someone I know at the qfpl (lightandlight I think?) made a python, haskell... thing... which was very good at finding python bugs like that
2021-10-19 01:09:10 +0200d34df00d(~d34df00d@2600:1700:8c60:3a10::48) (Ping timeout: 252 seconds)
2021-10-19 01:09:27 +0200 <DigitalKiwi> i got it from dibblego ;)
2021-10-19 01:10:28 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-19 01:11:59 +0200 <Axman6> yeah I figured you might have
2021-10-19 01:12:22 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60)
2021-10-19 01:12:36 +0200k60(~user@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 01:12:43 +0200k60(~user@broadband-95-84-168-218.ip.moscow.rt.ru) ()
2021-10-19 01:14:01 +0200burnsidesLlama(~burnsides@dhcp168-043.wadham.ox.ac.uk)
2021-10-19 01:14:10 +0200fluffyballoon(~user@131.93.208.196)
2021-10-19 01:14:32 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 01:14:51 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Client Quit)
2021-10-19 01:15:23 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 01:15:57 +0200trog(~trog@user/trog)
2021-10-19 01:17:51 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-19 01:17:59 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-19 01:18:43 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-10-19 01:19:59 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
2021-10-19 01:20:02 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Ping timeout: 260 seconds)
2021-10-19 01:21:18 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2021-10-19 01:21:21 +0200acidjnk_new3(~acidjnk@p200300d0c703cb87414c380a9484df88.dip0.t-ipconnect.de)
2021-10-19 01:24:30 +0200acidjnk_new(~acidjnk@p200300d0c703cb806ce024b26c2d7c09.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 01:24:38 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-19 01:25:24 +0200 <dibblego> sup yooz
2021-10-19 01:27:44 +0200 <Axman6> I reckon I'll be able to come visit youse all soon, jackdk keeps saying I should come up
2021-10-19 01:28:44 +0200 <dibblego> yeah harry ap
2021-10-19 01:28:51 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-10-19 01:29:49 +0200 <Axman6> Would've been sooner if gladys hasn't wrecked the joint for everyone
2021-10-19 01:30:27 +0200 <dibblego> yeah she's a knob — come and breathe all over me pls
2021-10-19 01:31:12 +0200 <jackdk> The one upside is that it dented her political forcefield enough that the corruption stuff may possibly potentially catch up with her maybe
2021-10-19 01:31:48 +0200 <dibblego> 'ere ya go, 28 Nov, seeya there https://i.imgur.com/O7jaEbR.png
2021-10-19 01:32:19 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-10-19 01:39:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 01:40:01 +0200mmhat(~mmh@55d44f19.access.ecotel.net) (Quit: WeeChat 3.3)
2021-10-19 01:42:22 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2021-10-19 01:47:37 +0200guydb89(~guy@98.40.140.117) (Quit: leaving)
2021-10-19 01:51:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255) (Remote host closed the connection)
2021-10-19 01:51:54 +0200guydb89(~guy@98.40.140.117)
2021-10-19 01:54:01 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 258 seconds)
2021-10-19 01:54:01 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-19 01:54:15 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 02:00:03 +0200unmanbearpig(~unmanbear@user/unmanbearpig)
2021-10-19 02:00:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-19 02:00:43 +0200 <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
2021-10-19 02:03:34 +0200 <geekosaur> yep. all the way back to H98. problem is they can be partial
2021-10-19 02:04:13 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-19 02:04:25 +0200abrantesasf(~abrantesa@187.36.170.211)
2021-10-19 02:04:32 +0200alzgh(~alzgh@user/alzgh)
2021-10-19 02:04:46 +0200 <unit73e> there's also the DuplicateRecordFields extension
2021-10-19 02:05:23 +0200 <unit73e> though I hardly ever use such extensions
2021-10-19 02:05:36 +0200 <monochrom> Naw, the problem we considered yesterday was "what if I really want different field types".
2021-10-19 02:05:51 +0200 <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
2021-10-19 02:05:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-19 02:05:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-19 02:05:52 +0200wroathe(~wroathe@user/wroathe)
2021-10-19 02:06:13 +0200 <monochrom> So, yesterday the question was about "data T = C1 {a :: Int} | C2 {a :: NotInt}"
2021-10-19 02:06:59 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-10-19 02:08:11 +0200ph88(~ph88@2a02:8109:9e00:7e5c::3d56) (Ping timeout: 264 seconds)
2021-10-19 02:08:25 +0200 <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
2021-10-19 02:08:32 +0200 <zzz> geekosaur: you mean we get an error if we do `y (Foo 7)` ?
2021-10-19 02:08:56 +0200 <geekosaur> zzz, yes
2021-10-19 02:09:17 +0200 <awpr> I can never remember whether it's legal to just say `My.Module.Left`, but it's worth a try
2021-10-19 02:09:20 +0200 <geekosaur> unit73e, xmonad solves that by calling them U, D, L, R
2021-10-19 02:09:25 +0200 <zzz> i hate records
2021-10-19 02:09:30 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2021-10-19 02:09:33 +0200 <unit73e> geekosaur, ok. might as well do the same thing. thanks.
2021-10-19 02:09:49 +0200 <geekosaur> awpr, yes
2021-10-19 02:10:16 +0200 <monochrom> In fact you now have to say My.Module.Left and Prelude.Left
2021-10-19 02:10:23 +0200 <geekosaur> (see Direction2D in xmonad)
2021-10-19 02:11:09 +0200 <monochrom> zzz: Please don't conflate Haskell's poor execuse of record syntax with records (the real ones) :)
2021-10-19 02:11:19 +0200Cajun(~Cajun@user/cajun) (Ping timeout: 256 seconds)
2021-10-19 02:11:38 +0200 <zzz> :)
2021-10-19 02:11:41 +0200 <zzz> give me a record
2021-10-19 02:11:43 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: restarting)
2021-10-19 02:11:49 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-10-19 02:12:08 +0200 <monochrom> Oh hell I missed a great pun opportunity. Let me fix it...
2021-10-19 02:12:17 +0200acidjnk_new(~acidjnk@p200300d0c703cb878946a34aec1faea1.dip0.t-ipconnect.de)
2021-10-19 02:12:19 +0200 <monochrom> For the record, please don't conflate Haskell's poor execuse of record syntax with records (the real ones) :)
2021-10-19 02:12:41 +0200 <Axman6> Not sure that pun works, but I'll allow it
2021-10-19 02:14:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-19 02:15:03 +0200 <zzz> i'm still not sure of what you mean by "real" records
2021-10-19 02:15:23 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-10-19 02:15:29 +0200acidjnk_new3(~acidjnk@p200300d0c703cb87414c380a9484df88.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 02:15:33 +0200 <monochrom> For example in SML, Pascal, C, ... basically every language except Haskell.
2021-10-19 02:15:39 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255)
2021-10-19 02:18:01 +0200meer(~delicacie@2601:6c4:4080:3f80:cc37:7f71:51d3:b41c) (Ping timeout: 245 seconds)
2021-10-19 02:18:10 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-10-19 02:21:41 +0200fluffyballoon(~user@131.93.208.196) (Remote host closed the connection)
2021-10-19 02:24:03 +0200Cajun(~Cajun@user/cajun)
2021-10-19 02:26:36 +0200fluffyballoon(~user@131.93.208.196)
2021-10-19 02:27:33 +0200Cajun(~Cajun@user/cajun) (Client Quit)
2021-10-19 02:29:52 +0200Cajun(~Cajun@user/cajun)
2021-10-19 02:35:01 +0200jollygood2(~bc8165b6@217.29.117.252)
2021-10-19 02:40:12 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-19 02:41:33 +0200sprout(~quassel@2a02:a467:ccd6:1:110c:9227:cd24:5132) (Ping timeout: 258 seconds)
2021-10-19 02:46:12 +0200 <jollygood2> there's records synax overhaul in ghc 9.2, which is still in alpha IIRC. RecordDotSyntax is one of them
2021-10-19 02:46:12 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-19 02:46:34 +0200MQ-17J(~MQ-17J@8.6.144.138)
2021-10-19 02:47:03 +0200 <jollygood2> also DuplicateRecordFields
2021-10-19 02:47:16 +0200 <c_wraith> DuplicateRecordFields has been around for a long time
2021-10-19 02:47:26 +0200 <c_wraith> NoFieldSelectors is the interesting new one in 9.2
2021-10-19 02:47:40 +0200 <jollygood2> h yes, that one
2021-10-19 02:47:58 +0200 <zzz> are lenses going to become obsolete?
2021-10-19 02:48:14 +0200 <c_wraith> No, lenses are finally going to be strictly better than built-in tools
2021-10-19 02:48:29 +0200 <jollygood2> no. from what I've read, they work fine with dot syntax. and do a lot more
2021-10-19 02:48:29 +0200 <zzz> how so?
2021-10-19 02:48:46 +0200 <Axman6> this is news to me too :o
2021-10-19 02:49:13 +0200 <kronicmage> strictly better except for build times -_-
2021-10-19 02:49:38 +0200 <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"? :)
2021-10-19 02:50:04 +0200 <zzz> that thought touched my mind
2021-10-19 02:50:07 +0200 <dsal> build times are only slow if you're using TH. You could always hand-write your lenses.
2021-10-19 02:50:25 +0200 <jollygood2> basically, instead of person personName (groupLeader group) we can use group.leader.name . and different records can also have .name etc fields
2021-10-19 02:50:33 +0200 <jollygood2> pretty neat
2021-10-19 02:50:44 +0200 <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.
2021-10-19 02:50:57 +0200 <dsal> I don't know much about RecordDotSyntax, but I don't think I like it.
2021-10-19 02:51:00 +0200 <c_wraith> here: https://www.reddit.com/r/haskell/comments/mhzf9l/announce_ghc_921alpha1_now_available/gt3lexp/
2021-10-19 02:51:27 +0200 <zzz> i don't even like qualified dot syntax
2021-10-19 02:51:33 +0200 <zzz> for the obvious reasons
2021-10-19 02:52:09 +0200 <c_wraith> Man, I've been waiting on 9.2 for 6 months, according to reddit
2021-10-19 02:52:18 +0200 <zzz> module dot syntax? i don't know what to call it
2021-10-19 02:53:02 +0200 <jollygood2> aprox how far are we from stable 9.2?
2021-10-19 02:57:31 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 252 seconds)
2021-10-19 02:57:59 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 264 seconds)
2021-10-19 02:58:15 +0200 <dsal> zzz: do you just not like dots?
2021-10-19 02:58:23 +0200hiruji(~hiruji@user/hiruji)
2021-10-19 02:58:26 +0200 <dsal> Or things that appear to mean different things.
2021-10-19 02:58:35 +0200MQ-17J(~MQ-17J@8.6.144.138) (Ping timeout: 264 seconds)
2021-10-19 02:59:04 +0200 <kronicmage> i do wish keyboards had a \cdot key so we could differentiate composition . and record .
2021-10-19 02:59:25 +0200 <dsal> My keyboard has that.
2021-10-19 02:59:28 +0200 <geekosaur> ·
2021-10-19 02:59:34 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 258 seconds)
2021-10-19 02:59:34 +0200 <kronicmage> damn
2021-10-19 02:59:41 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-10-19 02:59:47 +0200 <kronicmage> now we just need unicode character extension to support that lol
2021-10-19 02:59:48 +0200 <dsal> I use emacs. It has all the thigns.
2021-10-19 03:00:01 +0200 <dsal> I literally just type "f \cdot g" and it shows up as "f · g"
2021-10-19 03:00:08 +0200 <geekosaur> -XUnicodeSyntax?
2021-10-19 03:00:39 +0200 <jollygood2> I think it is pretty uncommon to omit space when composing functions.
2021-10-19 03:00:45 +0200 <geekosaur> hm, not even needed. (·) = (.)
2021-10-19 03:01:12 +0200 <jollygood2> they could have used different character, but dot is such an ubiquitous syntax for field access across countless languages
2021-10-19 03:01:36 +0200 <dsal> I like this example: sqr x = x × x
2021-10-19 03:01:40 +0200 <monochrom> module Data·Function where f ∘ g = \x -> f (g x) -- >:)
2021-10-19 03:02:01 +0200 <awpr> was that intentionally added to `base`, or was somebody just ASCII-art-ing a confused face and forgot the leading `--`?
2021-10-19 03:02:03 +0200 <kronicmage> monochrom: that's sexy lmao
2021-10-19 03:02:42 +0200 <zzz> dsal: things that appear to mean different things
2021-10-19 03:03:07 +0200 <dsal> zzz: It kind of means the same thing in lens, but you get to think of it a very different way.
2021-10-19 03:03:11 +0200lbseale_(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-10-19 03:03:58 +0200 <kronicmage> i still think it's kind of weird that lenses compose backwards
2021-10-19 03:04:34 +0200 <dsal> It's usually not weird in practice, but sometimes it is.
2021-10-19 03:04:52 +0200acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
2021-10-19 03:05:31 +0200 <c_wraith> they compose forward when you realize a lens is being used to make things bigger :)
2021-10-19 03:06:13 +0200 <elcaro> Raku uses '∘' for function composition. if you don't want to unicode, you use 'o' instead)
2021-10-19 03:06:37 +0200 <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
2021-10-19 03:07:06 +0200 <dsal> Call it amateurfunctor-lenses
2021-10-19 03:07:26 +0200 <c_wraith> ... how long have you been sitting on that name?
2021-10-19 03:08:00 +0200acidjnk_new(~acidjnk@p200300d0c703cb878946a34aec1faea1.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 03:08:26 +0200 <monochrom> SML uses o for function composition and declares it infix.
2021-10-19 03:08:53 +0200 <monochrom> In general you can declare any alphabetical function name infix.
2021-10-19 03:11:12 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 03:11:20 +0200 <c_wraith> that seems like something of a pain for parsing
2021-10-19 03:11:36 +0200 <monochrom> Yeah
2021-10-19 03:13:05 +0200MQ-17J(~MQ-17J@8.6.144.172)
2021-10-19 03:16:13 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 03:16:15 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 03:20:54 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-19 03:21:58 +0200neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 265 seconds)
2021-10-19 03:22:04 +0200falafel(~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com)
2021-10-19 03:23:24 +0200 <jollygood2> this is dope. c{taken.year = y} -- nested update map (.taken.term) -- nested selector
2021-10-19 03:23:46 +0200 <monochrom> :)
2021-10-19 03:29:24 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 03:31:29 +0200PHO`(~PHO@2405:6581:4ee0:2800:c84:d3ec:1ba2:843b)
2021-10-19 03:33:18 +0200acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 03:33:37 +0200guydb89(~guy@98.40.140.117) (Quit: Lost terminal)
2021-10-19 03:34:04 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 258 seconds)
2021-10-19 03:40:35 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
2021-10-19 03:40:53 +0200 <zzz> dsal: "bats" would be a better name
2021-10-19 03:42:11 +0200emf_(~emf@2620:10d:c090:400::5:a662) (Ping timeout: 245 seconds)
2021-10-19 03:43:44 +0200cjb94216(~cjb@user/cjb)
2021-10-19 03:44:18 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 03:45:01 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-10-19 03:45:52 +0200cjb(~cjb@user/cjb) (Ping timeout: 260 seconds)
2021-10-19 03:46:28 +0200cjb94216cjb
2021-10-19 03:47:44 +0200 <dsal> zzz: heh. I just got that.
2021-10-19 03:48:08 +0200jespada(~jespada@2803:9800:9842:7a62:a1db:843b:ed19:cad6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-10-19 03:49:24 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 03:49:33 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-10-19 03:54:30 +0200boxscape_(~boxscape_@p54a3581e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-10-19 03:55:06 +0200falafel(~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-10-19 03:56:11 +0200xff0x(~xff0x@2001:1a81:52fe:af00:73f9:c60:e593:d5a0) (Ping timeout: 264 seconds)
2021-10-19 03:57:47 +0200xff0x(~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267)
2021-10-19 04:09:57 +0200fluffyballoonfluffyballon`
2021-10-19 04:10:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 04:11:38 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 258 seconds)
2021-10-19 04:17:00 +0200fluffyballon`fluffyballoon
2021-10-19 04:20:59 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-19 04:24:08 +0200motherfsck(~motherfsc@user/motherfsck)
2021-10-19 04:25:18 +0200slack1256(~slack1256@45.4.2.52) (Ping timeout: 260 seconds)
2021-10-19 04:37:20 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
2021-10-19 04:41:55 +0200fluffyballoon(~user@131.93.208.196) (Ping timeout: 258 seconds)
2021-10-19 04:44:02 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-10-19 04:44:08 +0200td_(~td@muedsl-82-207-238-233.citykom.de) (Ping timeout: 265 seconds)
2021-10-19 04:44:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-19 04:45:43 +0200td_(~td@muedsl-82-207-238-089.citykom.de)
2021-10-19 04:46:35 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds)
2021-10-19 04:47:59 +0200abrantesasf(~abrantesa@187.36.170.211) (Remote host closed the connection)
2021-10-19 04:48:16 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-10-19 04:52:32 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-19 04:55:48 +0200burnsidesLlama(~burnsides@dhcp168-043.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-19 05:01:37 +0200PHO`(~PHO@2405:6581:4ee0:2800:c84:d3ec:1ba2:843b) (Quit: Leaving)
2021-10-19 05:02:16 +0200PHO`(~pho@akari.cielonegro.org)
2021-10-19 05:06:53 +0200alx741(~alx741@186.178.108.68) (Quit: alx741)
2021-10-19 05:18:56 +0200Axma85485(~Axman6@user/axman6)
2021-10-19 05:18:59 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-10-19 05:19:52 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-19 05:21:02 +0200Axman6(~Axman6@user/axman6) (Ping timeout: 260 seconds)
2021-10-19 05:26:09 +0200meer(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2021-10-19 05:26:13 +0200falafel(~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com)
2021-10-19 05:32:08 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-19 05:33:26 +0200meer(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 265 seconds)
2021-10-19 05:43:03 +0200meer(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2021-10-19 05:44:37 +0200meerInst
2021-10-19 05:45:30 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 05:45:31 +0200elvishjerricco(sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 245 seconds)
2021-10-19 05:45:31 +0200Boarders(sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 245 seconds)
2021-10-19 05:45:31 +0200grfn(sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 245 seconds)
2021-10-19 05:46:19 +0200edmundnoble(sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 258 seconds)
2021-10-19 05:46:42 +0200ehamberg(sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 258 seconds)
2021-10-19 05:46:42 +0200sclv(sid39734@haskell/developer/sclv) (Ping timeout: 258 seconds)
2021-10-19 05:46:46 +0200tritlo(sid58727@user/tritlo) (Ping timeout: 245 seconds)
2021-10-19 05:46:46 +0200astra`(sid289983@user/amish) (Ping timeout: 245 seconds)
2021-10-19 05:47:05 +0200econo(uid147250@user/econo) (Ping timeout: 258 seconds)
2021-10-19 05:47:11 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-10-19 05:47:11 +0200dmj`(sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-10-19 05:47:28 +0200SrPx(sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 258 seconds)
2021-10-19 05:47:47 +0200etrepum(sid763@id-763.uxbridge.irccloud.com) (Ping timeout: 264 seconds)
2021-10-19 05:47:51 +0200SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 258 seconds)
2021-10-19 05:48:01 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 245 seconds)
2021-10-19 05:48:18 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-10-19 05:48:40 +0200edmundnoble(sid229620@helmsley.irccloud.com)
2021-10-19 05:49:26 +0200tritlo(sid58727@user/tritlo)
2021-10-19 05:49:27 +0200SrPx(sid108780@id-108780.uxbridge.irccloud.com)
2021-10-19 05:49:29 +0200ehamberg(sid18208@id-18208.hampstead.irccloud.com)
2021-10-19 05:49:29 +0200dmj`(sid72307@id-72307.hampstead.irccloud.com)
2021-10-19 05:49:30 +0200econo(uid147250@user/econo)
2021-10-19 05:49:32 +0200SanchayanMaity(sid478177@hampstead.irccloud.com)
2021-10-19 05:49:34 +0200astra`(sid289983@user/amish)
2021-10-19 05:49:45 +0200etrepum(sid763@id-763.uxbridge.irccloud.com)
2021-10-19 05:49:49 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-10-19 05:50:11 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-10-19 05:59:57 +0200grfn(sid449115@id-449115.helmsley.irccloud.com)
2021-10-19 05:59:57 +0200elvishjerricco(sid237756@id-237756.helmsley.irccloud.com)
2021-10-19 06:00:26 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 06:00:59 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-10-19 06:01:57 +0200sclv(sid39734@haskell/developer/sclv)
2021-10-19 06:02:04 +0200Boarders(sid425905@id-425905.lymington.irccloud.com)
2021-10-19 06:05:06 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 06:05:41 +0200azimut_(~azimut@gateway/tor-sasl/azimut)
2021-10-19 06:08:36 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-10-19 06:19:10 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-10-19 06:31:11 +0200phma(~phma@host-67-44-209-44.hnremote.net) (Read error: Connection reset by peer)
2021-10-19 06:31:36 +0200jeffz(~user@lambda.xen.prgmr.com)
2021-10-19 06:32:09 +0200phma(~phma@host-67-44-208-9.hnremote.net)
2021-10-19 06:35:07 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 06:35:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-19 06:35:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-19 06:35:20 +0200wroathe(~wroathe@user/wroathe)
2021-10-19 06:39:23 +0200MQ-17J(~MQ-17J@8.6.144.172) (Ping timeout: 264 seconds)
2021-10-19 06:39:43 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 06:39:59 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 258 seconds)
2021-10-19 06:40:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 06:40:59 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-10-19 06:43:52 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 06:44:47 +0200Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 264 seconds)
2021-10-19 06:46:35 +0200rekahsoft(~rekahsoft@52.129.35.150) (Ping timeout: 264 seconds)
2021-10-19 06:53:59 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-10-19 06:54:02 +0200cjb(~cjb@user/cjb) ()
2021-10-19 06:56:13 +0200Axma85485Axman6
2021-10-19 07:06:00 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 07:08:00 +0200zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2021-10-19 07:08:17 +0200coot(~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl)
2021-10-19 07:09:59 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-10-19 07:10:11 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 07:10:31 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 252 seconds)
2021-10-19 07:12:12 +0200zmt00(~zmt00@user/zmt00)
2021-10-19 07:13:04 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-19 07:14:41 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 245 seconds)
2021-10-19 07:15:15 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 07:15:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-19 07:18:14 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-19 07:26:25 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 07:30:47 +0200mikoto-chan(~mikoto-ch@185.237.102.123)
2021-10-19 07:30:56 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds)
2021-10-19 07:33:53 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-10-19 07:34:42 +0200rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-19 07:35:45 +0200rembo10(~rembo10@remulis.com)
2021-10-19 07:42:53 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 07:47:22 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 07:49:26 +0200mikoto-chan(~mikoto-ch@185.237.102.123) (Quit: mikoto-chan)
2021-10-19 07:50:31 +0200falafel(~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-10-19 07:55:10 +0200_\_(~o@user/ding) (Read error: Connection reset by peer)
2021-10-19 07:55:38 +0200_\_(~o@user/ding)
2021-10-19 07:59:04 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-10-19 07:59:20 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-19 07:59:43 +0200Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2021-10-19 08:15:47 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 08:18:33 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection)
2021-10-19 08:18:48 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 08:19:59 +0200_xor(~xor@72.49.199.147) (Read error: Connection reset by peer)
2021-10-19 08:20:31 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds)
2021-10-19 08:20:51 +0200pmk(~user@2a02:587:9418:a234:40de:ca53:4e3:4a70)
2021-10-19 08:20:52 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-10-19 08:21:59 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-10-19 08:24:25 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection)
2021-10-19 08:25:02 +0200jollygood2(~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-10-19 08:25:51 +0200_xor(~xor@72.49.199.147)
2021-10-19 08:26:23 +0200michalz(~michalz@185.246.204.77)
2021-10-19 08:26:50 +0200_xor(~xor@72.49.199.147) (Read error: Connection reset by peer)
2021-10-19 08:27:11 +0200_xor(~xor@72.49.199.147)
2021-10-19 08:28:37 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-19 08:34:15 +0200p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-19 08:36:22 +0200unmanbearpig(~unmanbear@user/unmanbearpig) (Ping timeout: 260 seconds)
2021-10-19 08:38:49 +0200p3n(~p3n@217.198.124.246)
2021-10-19 08:44:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 08:44:52 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-10-19 08:48:11 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-10-19 08:48:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-19 08:49:28 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-19 08:50:57 +0200Sgeo_(~Sgeo@user/sgeo)
2021-10-19 08:51:12 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-10-19 08:52:05 +0200Neuromancer(~Neuromanc@user/neuromancer) (Ping timeout: 265 seconds)
2021-10-19 08:52:40 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 08:56:28 +0200fendor(~fendor@77.119.169.61.wireless.dyn.drei.com)
2021-10-19 08:57:46 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 08:59:04 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9)
2021-10-19 08:59:48 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-10-19 09:06:42 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-19 09:12:03 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-19 09:12:53 +0200fendor(~fendor@77.119.169.61.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-19 09:13:29 +0200ubert(~Thunderbi@178.115.56.221.wireless.dyn.drei.com)
2021-10-19 09:18:40 +0200Neuromancer(~Neuromanc@user/neuromancer)
2021-10-19 09:19:03 +0200jollygood2(~bc8165b6@217.29.117.252)
2021-10-19 09:19:29 +0200Guest4852(~Guest48@82.40.121.143)
2021-10-19 09:21:00 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2021-10-19 09:21:05 +0200 <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
2021-10-19 09:21:32 +0200 <jollygood2> I don't need mutability
2021-10-19 09:21:34 +0200ub(~Thunderbi@178.115.56.221.wireless.dyn.drei.com)
2021-10-19 09:23:53 +0200nschoe(~quassel@178.251.84.79)
2021-10-19 09:24:22 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 09:24:35 +0200nschoe(~quassel@178.251.84.79) (Client Quit)
2021-10-19 09:28:54 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-10-19 09:30:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 09:30:29 +0200Cajun(~Cajun@user/cajun) (Ping timeout: 256 seconds)
2021-10-19 09:31:48 +0200Inst_(~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843)
2021-10-19 09:32:06 +0200 <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.
2021-10-19 09:33:54 +0200 <Inst_> so
2021-10-19 09:34:09 +0200chele(~chele@user/chele)
2021-10-19 09:39:06 +0200 <pavonia> Guest4852: What about Right?
2021-10-19 09:40:14 +0200 <Guest4852> Right what? There's nothing that can be inside it.
2021-10-19 09:40:30 +0200 <pavonia> Right undefined
2021-10-19 09:41:19 +0200 <Guest4852> Oh. Good point.
2021-10-19 09:44:10 +0200 <lortabac> Guest4852: that's what 'absurd' is for
2021-10-19 09:44:31 +0200retroid_(~retro@2e41e9c8.skybroadband.com) (Ping timeout: 252 seconds)
2021-10-19 09:44:41 +0200 <lortabac> f (Right x) = absurd x
2021-10-19 09:45:23 +0200retroid_(~retro@2e41e9c8.skybroadband.com)
2021-10-19 09:47:13 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 09:50:57 +0200 <Guest4852> I was hoping to avoid the extra code. But I guess I can't. Thanks.
2021-10-19 09:51:39 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-10-19 09:55:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255) (Remote host closed the connection)
2021-10-19 09:56:14 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-19 09:57:23 +0200Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-10-19 10:00:42 +0200edwtjo_edwtjo
2021-10-19 10:04:52 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 252 seconds)
2021-10-19 10:05:24 +0200hendursa1(~weechat@user/hendursaga)
2021-10-19 10:06:13 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-19 10:08:33 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 10:09:06 +0200kuribas(~user@ptr-25vy0i72e2u2h548zvl.18120a2.ip6.access.telenet.be)
2021-10-19 10:09:06 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-10-19 10:11:02 +0200mei6(~mei@user/mei)
2021-10-19 10:13:36 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
2021-10-19 10:14:35 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-10-19 10:14:39 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds)
2021-10-19 10:14:53 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 10:17:29 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-19 10:17:54 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-19 10:18:08 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-10-19 10:18:14 +0200stengah(~stengah@user/stengah)
2021-10-19 10:19:31 +0200ubert1(~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
2021-10-19 10:19:32 +0200ub1(~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
2021-10-19 10:19:35 +0200ub(~Thunderbi@178.115.56.221.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2021-10-19 10:19:35 +0200ubert(~Thunderbi@178.115.56.221.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2021-10-19 10:19:35 +0200ub1ubert
2021-10-19 10:19:40 +0200Guest4852(~Guest48@82.40.121.143) (Quit: Client closed)
2021-10-19 10:20:34 +0200 <fgaz> I have a question about laziness
2021-10-19 10:20:34 +0200 <fgaz> suppose there is a `data MapWrap a b = MapWrap !(Map a b)`
2021-10-19 10:20:36 +0200 <fgaz> and I'm using the strict Map interface
2021-10-19 10:20:40 +0200 <fgaz> and I define `f x (MapWrap m) = insert x m`
2021-10-19 10:20:44 +0200 <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?
2021-10-19 10:21:03 +0200unmanbearpig(~unmanbear@user/unmanbearpig)
2021-10-19 10:22:00 +0200 <fgaz> s/x/k v/
2021-10-19 10:28:05 +0200Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Read error: Connection reset by peer)
2021-10-19 10:29:29 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-10-19 10:30:38 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2021-10-19 10:31:17 +0200zaquest(~notzaques@5.128.210.178)
2021-10-19 10:33:04 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
2021-10-19 10:34:10 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-19 10:36:40 +0200pavonia(~user@user/siracusa)
2021-10-19 10:37:35 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 264 seconds)
2021-10-19 10:40:49 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-19 10:43:24 +0200ph88(~ph88@2a02:8109:9e00:7e5c::3d56)
2021-10-19 10:46:58 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-19 10:47:10 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-10-19 10:50:39 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-10-19 10:55:30 +0200acidjnk_new3(~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de)
2021-10-19 10:55:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 10:56:28 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-10-19 10:57:41 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-10-19 10:59:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 245 seconds)
2021-10-19 11:02:04 +0200 <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
2021-10-19 11:02:21 +0200 <tomsmeding> also you should return MapWrap (insert k v m), not just 'insert k v m' ;)
2021-10-19 11:03:13 +0200 <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
2021-10-19 11:04:14 +0200Inst_(~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843) (Read error: Connection reset by peer)
2021-10-19 11:04:33 +0200Inst_(~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843)
2021-10-19 11:08:48 +0200 <fgaz> yeah there's a big warning at the top of the module
2021-10-19 11:09:47 +0200 <fgaz> i wonder if there are plans to fix that
2021-10-19 11:09:58 +0200 <fgaz> thanks tomsmeding
2021-10-19 11:10:05 +0200 <fgaz> <tomsmeding> "also you should return MapWrap..." <- yes, that's what i meant :)
2021-10-19 11:11:08 +0200 <tomsmeding> fgaz: https://github.com/haskell/containers/issues/74
2021-10-19 11:12:51 +0200 <fgaz> i see.. edward does have a point
2021-10-19 11:13:46 +0200acidjnk_new(~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de)
2021-10-19 11:17:08 +0200acidjnk_new3(~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 11:21:15 +0200stengah(~stengah@user/stengah) (Quit: stengah)
2021-10-19 11:21:52 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-10-19 11:22:09 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2021-10-19 11:24:48 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 11:27:57 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-10-19 11:28:40 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-19 11:33:00 +0200__monty__(~toonn@user/toonn)
2021-10-19 11:36:16 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
2021-10-19 11:37:39 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 11:42:13 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 11:52:25 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-10-19 11:53:22 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-19 12:00:26 +0200 <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?
2021-10-19 12:01:46 +0200sayola(~vekto@dslb-002-201-085-156.002.201.pools.vodafone-ip.de)
2021-10-19 12:01:56 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-10-19 12:10:40 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 12:10:59 +0200 <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?
2021-10-19 12:11:12 +0200 <ncopa> or would it be ok to remove those packages
2021-10-19 12:15:59 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 264 seconds)
2021-10-19 12:18:22 +0200aplainze1akindaplainzetakind
2021-10-19 12:20:21 +0200 <dminuoso> Mmm, maybe haskeline is waht I want
2021-10-19 12:30:16 +0200 <Hecate> dminuoso: seems like it yeah
2021-10-19 12:31:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-19 12:32:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 12:37:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-10-19 12:37:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 12:40:24 +0200 <dminuoso> Ohh hah, wizards and haskeline seem to go together.
2021-10-19 12:43:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-10-19 12:43:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 12:45:51 +0200rkrishnan(~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c)
2021-10-19 12:46:25 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 12:47:03 +0200stengah(~stengah@user/stengah)
2021-10-19 12:47:11 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-10-19 12:47:28 +0200 <stengah> hey! so I'm trying to understand monads
2021-10-19 12:47:35 +0200 <stengah> and just had a thought
2021-10-19 12:47:44 +0200 <stengah> (>>=
2021-10-19 12:47:53 +0200 <stengah> >>=
2021-10-19 12:48:06 +0200 <stengah> is like a continuation
2021-10-19 12:48:23 +0200 <stengah> is there anything wrong with this thinking?
2021-10-19 12:48:45 +0200 <dminuoso> stengah: For the specific IO instance that seems like one possible approach.
2021-10-19 12:49:05 +0200 <Franciman> stengah: I also like to think about it as «effectful let»
2021-10-19 12:49:13 +0200 <dminuoso> stengah: The thing is, Monad doesnt have an instrinsitic meaning where you can phrase: (>>=) is <insert something>
2021-10-19 12:49:13 +0200 <Franciman> it binds a variable to the result of an effectufl operation
2021-10-19 12:49:23 +0200 <Franciman> it's like you did:
2021-10-19 12:49:35 +0200 <Franciman> «let» x = action
2021-10-19 12:49:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-19 12:49:38 +0200 <dminuoso> stengah: All explanations you likely see are just from people who have built up an intuition that is developed by practicing many instances.
2021-10-19 12:49:40 +0200 <Franciman> in f x
2021-10-19 12:49:42 +0200 <stengah> a>>=f means after getting a do something (described by f)
2021-10-19 12:49:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 12:50:15 +0200 <dminuoso> stengah: For IO this is a rough (inaccurate) description, but it should work as an initial step.
2021-10-19 12:50:38 +0200 <stengah> ok
2021-10-19 12:50:46 +0200 <dminuoso> stengah: The key thing to realize is that Monad is just a typeclass/interface, so >>= means different things for different instances.
2021-10-19 12:50:52 +0200 <dminuoso> But that's perfectly okay
2021-10-19 12:51:05 +0200 <dminuoso> stengah: So let me rephrase your statement a little bit:
2021-10-19 12:51:14 +0200 <dminuoso> >>= for IO is (sort of) like a continuation
2021-10-19 12:51:21 +0200 <dminuoso> The key addition is "for IO"
2021-10-19 12:51:31 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 12:51:56 +0200 <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.
2021-10-19 12:52:08 +0200 <kuribas> there's a interesting link between monads and continations.
2021-10-19 12:52:16 +0200 <dminuoso> Yeah which is probably not helpful.
2021-10-19 12:52:40 +0200 <kuribas> well, a monad is not a continuation, if that is what you mean.
2021-10-19 12:52:42 +0200 <dminuoso> stengah: And you repeat that process, and without extra effort you will overtime begin to understand what monad abstracts over.
2021-10-19 12:52:51 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-10-19 12:52:54 +0200 <kuribas> but they are likely equally powerful.
2021-10-19 12:53:39 +0200 <stengah> so I should just look at many instances of monad in the wild
2021-10-19 12:53:50 +0200 <kuribas> stengah: yes
2021-10-19 12:54:02 +0200 <dminuoso> stengah: Personally Id say no.
2021-10-19 12:54:07 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-19 12:54:08 +0200 <dminuoso> stengah: Let this occur on its own.
2021-10-19 12:54:20 +0200 <dminuoso> Forcibly understanding what Monad is about is not particularly helpful when learning Haskell.
2021-10-19 12:54:32 +0200 <dminuoso> So if you understand what >>= does for IO, that's great. Keep it at that.
2021-10-19 12:54:41 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 12:54:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-19 12:55:00 +0200 <dminuoso> Then later, you might discover that there is Monad Maybe, so >>= has some different behavior for that. So just explore it then
2021-10-19 12:55:24 +0200 <dminuoso> Because really, almost every instance is ridiculously simple to understand
2021-10-19 12:55:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 12:55:38 +0200stengahinitiates path to monad enlightenment
2021-10-19 12:55:56 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 12:56:04 +0200rkrishnan(~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) (Remote host closed the connection)
2021-10-19 12:56:47 +0200 <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.
2021-10-19 12:57:05 +0200 <dminuoso> So you dont necessarily must understand what Monad is about, you just pick some type you like.
2021-10-19 12:57:20 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Client Quit)
2021-10-19 12:57:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 12:57:34 +0200 <stengah> hmmm
2021-10-19 12:57:56 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 12:58:41 +0200 <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.
2021-10-19 12:59:03 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 12:59:05 +0200 <dminuoso> We could have simply made a function called `then :: IO a -> (a -> IO b) -> IO b` that does this.
2021-10-19 12:59:24 +0200 <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
2021-10-19 12:59:29 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 13:00:04 +0200 <dminuoso> There's nothing magical about this, nothing mathematical, nothing overly complicated.
2021-10-19 13:00:51 +0200alx741(~alx741@186.178.108.68)
2021-10-19 13:00:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-19 13:00:59 +0200 <dminuoso> And in fact:
2021-10-19 13:01:12 +0200 <dminuoso> We put it into a typeclass called Monad, and `then` is just named (>>=)
2021-10-19 13:01:16 +0200 <dminuoso> % :t (>>=)
2021-10-19 13:01:17 +0200 <yahb> dminuoso: Monad m => m a -> (a -> m b) -> m b
2021-10-19 13:01:44 +0200 <lortabac> this function exists, it's just not in Prelude
2021-10-19 13:01:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 13:01:58 +0200 <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.
2021-10-19 13:02:09 +0200nehsou^(~nehsou@70.166.66.234) (Remote host closed the connection)
2021-10-19 13:02:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds)
2021-10-19 13:02:17 +0200 <dminuoso> So if you pick IO, it becomes this boring and simple `then`
2021-10-19 13:02:21 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-10-19 13:02:37 +0200rkrishnan(~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c)
2021-10-19 13:02:59 +0200 <lortabac> in GHC.Base there are bindIO, thenIO and returnIO
2021-10-19 13:03:10 +0200 <dminuoso> lortabac: Ah interesting. :)
2021-10-19 13:03:20 +0200 <dminuoso> % import GHC.Base
2021-10-19 13:03:21 +0200 <yahb> dminuoso:
2021-10-19 13:03:22 +0200 <dminuoso> % :t thenIO
2021-10-19 13:03:22 +0200 <yahb> dminuoso: IO a -> IO b -> IO b
2021-10-19 13:03:26 +0200 <dminuoso> % :t bindIO
2021-10-19 13:03:26 +0200 <yahb> dminuoso: IO a -> (a -> IO b) -> IO b
2021-10-19 13:04:53 +0200 <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`
2021-10-19 13:04:55 +0200 <stengah> nice
2021-10-19 13:05:14 +0200dminuosowonders
2021-10-19 13:05:15 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-19 13:05:38 +0200 <c_wraith> it's really hard to make people stop believing there's a deep meaning they don't understand
2021-10-19 13:05:52 +0200 <lortabac> dminuoso: personally I would have exposed these functions in Prelude
2021-10-19 13:06:11 +0200Cajun(~Cajun@user/cajun)
2021-10-19 13:06:12 +0200 <lortabac> no need to use Monad until you need to generalize over all monads
2021-10-19 13:06:24 +0200 <dminuoso> Indeed!
2021-10-19 13:06:36 +0200 <dminuoso> Could have had mapMaybe, concatMap, bindIO
2021-10-19 13:06:37 +0200 <lortabac> maybe it's for the do notation
2021-10-19 13:06:55 +0200 <dminuoso> lortabac: there's a pretty nifty formatting where you can avoid the do notation
2021-10-19 13:06:56 +0200 <lortabac> you can't have do notation with the monomorphic functions
2021-10-19 13:07:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-19 13:07:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 13:07:55 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-19 13:07:56 +0200 <dminuoso> lortabac: https://gist.github.com/dminuoso/16bd907d520325722cfcf1f148395814
2021-10-19 13:07:57 +0200 <dminuoso> This gets close
2021-10-19 13:08:09 +0200 <dminuoso> So as long as you use a dedicated monomorphized operator variant of bindIO and thenIO...
2021-10-19 13:08:47 +0200 <lortabac> nice, but I have to say it's less readable than do notation
2021-10-19 13:09:03 +0200 <dminuoso> Which could be a good motivation to introduce do-notation later on.
2021-10-19 13:09:15 +0200 <lortabac> yes
2021-10-19 13:09:40 +0200 <dminuoso> And actually, you can use do-notation with RebindableSyntax.
2021-10-19 13:09:41 +0200 <dminuoso> :p
2021-10-19 13:09:56 +0200 <lortabac> also (not useful for beginners) IO itself is exposed in GHC.Types
2021-10-19 13:11:37 +0200 <dminuoso> c_wraith: I guess so. Urban myths are particularly hard to get rid of.
2021-10-19 13:12:25 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-19 13:12:27 +0200 <c_wraith> it's sort of like believing in a programming illuminati. They're the ones holding the true secret meaning of "monad"
2021-10-19 13:12:33 +0200 <lortabac> in one occasion it allowed me to recreate a custom "bind" function that works with my own types
2021-10-19 13:13:08 +0200 <lortabac> that's a rare use case, but it's just to show that IO is not as special as you might think initially
2021-10-19 13:13:59 +0200 <stengah> dminuoso: I'll meditate on what you said.
2021-10-19 13:14:01 +0200 <stengah> ty
2021-10-19 13:14:40 +0200mbuf(~Shakthi@27.58.140.141)
2021-10-19 13:14:53 +0200hiruji`(~hiruji@2606:6080:1002:8:3285:30e:de43:8809)
2021-10-19 13:15:58 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-10-19 13:19:10 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 13:19:31 +0200 <jneira[m]> <ncopa> "hi. I'm trying to upgrade ghc to..." <- well several linux distros does it, but it is not a good argument ;-)
2021-10-19 13:20:05 +0200 <jneira[m]> otoh we also have ghcup nowadays and it is usually recommended to install the haskell toolchain
2021-10-19 13:20:43 +0200 <jneira[m]> do you have some stats of its actual real use?
2021-10-19 13:20:51 +0200 <ncopa> thats why i ask, since the recommended way is normally not to use the distro package
2021-10-19 13:21:14 +0200 <ncopa> well, we have at least two relatively important packages using it: shellcheck and pandoc
2021-10-19 13:21:36 +0200 <ncopa> unfortunately we have only ghc for x86_64 and it is a pain to bootstrap for new architectures
2021-10-19 13:22:35 +0200 <ncopa> we use shellcheck for our CI, and i dont think we want install shellcheck with ghcup
2021-10-19 13:22:55 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-10-19 13:23:13 +0200 <ncopa> so i guess i will have to spend another few days to fix the ghc distro package
2021-10-19 13:23:55 +0200 <jneira[m]> hmm you did mention cabal before
2021-10-19 13:24:57 +0200 <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_t…
2021-10-19 13:24:59 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 264 seconds)
2021-10-19 13:25:21 +0200 <jneira[m]> you could open an issue in the cabal repo about, are you using https://github.com/haskell/cabal/tree/master/bootstrap?
2021-10-19 13:27:08 +0200 <merijn> ncopa: You can just install the bindists directly?
2021-10-19 13:27:16 +0200 <merijn> ncopa: That's what I've been doing for years
2021-10-19 13:27:58 +0200 <merijn> otoh, that's basically what ghcup does for you :p
2021-10-19 13:28:47 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-19 13:29:16 +0200 <lortabac> dminuoso: haha, I swear that in that particular case it was safe (and I didn't have any other option)
2021-10-19 13:31:46 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-10-19 13:32:55 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-19 13:36:42 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-10-19 13:36:47 +0200 <dminuoso> lortabac: The times I thought "Oh now this unsafePerformIO is really safe", and got bitten back mysterious ways... :p
2021-10-19 13:36:58 +0200 <lortabac> :D
2021-10-19 13:37:14 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 13:37:22 +0200 <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.
2021-10-19 13:37:51 +0200 <unit73e> xmonad is more configurable
2021-10-19 13:37:56 +0200 <merijn> I mean
2021-10-19 13:38:05 +0200 <merijn> The real insight is that xmonad isn't a window manager
2021-10-19 13:38:16 +0200 <merijn> It's a library/DSL for writing custom window managers :p
2021-10-19 13:38:24 +0200 <dminuoso> That's not really correct
2021-10-19 13:38:33 +0200 <dminuoso> xmonad comes with plenty defaults that make it a proper window manager
2021-10-19 13:38:47 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 13:39:17 +0200 <unit73e> I still get what merijn meant. it's just vim/emacs aren't editors, they're DSL for writing custom editors
2021-10-19 13:39:24 +0200 <unit73e> but both are editors
2021-10-19 13:39:34 +0200 <merijn> tbh, I kinda disagree on vim, there, tbh
2021-10-19 13:39:51 +0200 <unit73e> there was that haskell one
2021-10-19 13:39:56 +0200 <dminuoso> In case of emacs its sort of wrong too.
2021-10-19 13:40:16 +0200 <unit73e> both are sort of wrong but I think you get the point
2021-10-19 13:40:21 +0200 <dminuoso> The C core is essentially a buffer framework, but emacs comes with plenty of elisp making it an editor out of the box.
2021-10-19 13:41:03 +0200 <unit73e> it was this guy here: https://yi-editor.github.io/
2021-10-19 13:41:08 +0200 <dminuoso> And Id consider the elisp code to be part of emacs.
2021-10-19 13:41:14 +0200 <unit73e> looks dead
2021-10-19 13:41:39 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 13:41:48 +0200 <geekosaur> yeh, every so often someoine picks it up, hacks on it for a few months, and gives up
2021-10-19 13:42:15 +0200 <unit73e> hum, it looked like a nice project
2021-10-19 13:42:25 +0200 <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
2021-10-19 13:42:42 +0200 <merijn> Custom editors are like people's "dream game"
2021-10-19 13:42:52 +0200 <merijn> More fun in theory than in practice :p
2021-10-19 13:43:01 +0200 <unit73e> doesn't language server solve that problem?
2021-10-19 13:43:03 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-19 13:43:06 +0200 <unit73e> of being an "IDE"
2021-10-19 13:43:07 +0200 <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.
2021-10-19 13:43:15 +0200 <dminuoso> It looked so innocent...
2021-10-19 13:43:17 +0200 <geekosaur> sure, but HLS onlyt sprang into existence a year ago
2021-10-19 13:43:49 +0200 <unit73e> right. well yi just has to support that. language server is one of the few things microsoft did right lol
2021-10-19 13:45:02 +0200 <unit73e> vscode is kind of cheesy though
2021-10-19 13:45:16 +0200 <unit73e> it's okayish but kind of quirky
2021-10-19 13:45:45 +0200 <unit73e> I just use neovim
2021-10-19 13:47:35 +0200 <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
2021-10-19 13:47:48 +0200 <ncopa> merijn: i guess I can install the bindists directly, but that cannot be used as dependencies for any other alpine packages
2021-10-19 13:47:55 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-10-19 13:48:14 +0200 <ncopa> basically, what i wonder is if i can remove the ghc package and cabal package and let the users use the bindists directly
2021-10-19 13:48:20 +0200 <merijn> ncopa: True, but why would GHC be a dependency of a package you build?
2021-10-19 13:48:36 +0200 <merijn> ncopa: Bindists don't come with cabal, but other than that, yes
2021-10-19 13:48:52 +0200ArctVaulMarsHMPJ(~pjetcetal@2.95.44.252) (Read error: Connection reset by peer)
2021-10-19 13:49:10 +0200 <ncopa> so i dont need ghc to build shellcheck or pandoc?
2021-10-19 13:49:31 +0200 <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
2021-10-19 13:49:43 +0200 <merijn> ncopa: You need it to build those, but not to *use* them
2021-10-19 13:50:07 +0200 <merijn> ncopa: Unless you're saying alpine packages require installing build dependencies of packages to use those packages?
2021-10-19 13:51:09 +0200 <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
2021-10-19 13:51:49 +0200 <merijn> ncopa: Right, but the shellcheck/pandoc binaries don't need GHC or cabal installed
2021-10-19 13:51:55 +0200ubert2(~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
2021-10-19 13:52:07 +0200 <ncopa> correct. not when they are built
2021-10-19 13:52:28 +0200 <unit73e> Cajun, it's definitely easier to begin but I got into a lot of weirdness I can't really remember right now
2021-10-19 13:52:38 +0200 <ncopa> how do i install the shellcheck precompiled binary on alpine?
2021-10-19 13:52:43 +0200 <unit73e> one had to do with git features
2021-10-19 13:53:10 +0200 <unit73e> still, better than the other GUI only editors
2021-10-19 13:53:22 +0200 <unit73e> imo
2021-10-19 13:53:32 +0200ubert1(~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-10-19 13:53:39 +0200phma(~phma@host-67-44-208-9.hnremote.net) (Read error: Connection reset by peer)
2021-10-19 13:54:39 +0200phma(~phma@host-67-44-209-75.hnremote.net)
2021-10-19 13:55:47 +0200 <ncopa> ok the precompiled binary actually works. https://github.com/koalaman/shellcheck/releases
2021-10-19 13:55:59 +0200 <ncopa> maybe i can kick ghc out of alpine after all
2021-10-19 13:59:17 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 258 seconds)
2021-10-19 13:59:54 +0200 <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
2021-10-19 14:01:10 +0200amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-10-19 14:02:12 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-10-19 14:02:18 +0200amk(~amk@109.255.169.126)
2021-10-19 14:03:02 +0200 <ncopa> alpine linux uses musl libc so normally a rebuild is needed for precompiled things that links to libc.so.6
2021-10-19 14:03:34 +0200 <merijn> ncopa: Yes, but if the binary is built on alpine it will just statically link musl
2021-10-19 14:03:51 +0200 <merijn> (or dynamically, dunno what the default is)
2021-10-19 14:04:00 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk)
2021-10-19 14:04:16 +0200 <ncopa> hum... this is very tempting
2021-10-19 14:04:38 +0200 <ncopa> im pretty sure i will get a handful angry users if i remove ghc package
2021-10-19 14:04:56 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-19 14:05:03 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk)
2021-10-19 14:05:23 +0200 <ncopa> but i'll just point them to the "recommended" way to install and manage and keep the haskell stuff up dated
2021-10-19 14:05:37 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-10-19 14:05:43 +0200 <ncopa> would simplify things
2021-10-19 14:06:10 +0200 <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
2021-10-19 14:06:23 +0200 <ncopa> oh ofcourse not
2021-10-19 14:06:36 +0200 <ncopa> apk add vim does of course not install gcc
2021-10-19 14:06:44 +0200 <ncopa> and apk add shellcheck does not pull in ghc
2021-10-19 14:06:54 +0200 <ncopa> the problem is that we need those at build time
2021-10-19 14:07:14 +0200alzgh(~alzgh@user/alzgh)
2021-10-19 14:07:14 +0200 <ncopa> we cannot provide andy vim package without having a gcc compiler. nore can we build any kernel or anything else
2021-10-19 14:08:06 +0200 <ncopa> what im saying is that we need a ghc package to be able to build other packages that are written in haskell
2021-10-19 14:09:11 +0200 <ncopa> but if we can say: alpine does not use haskell (no shellcheck, no pandoc etc) then we can remove ghc package
2021-10-19 14:09:57 +0200 <ncopa> but that also means that we cannot provide any packages for anything in the (build time) dependency chain
2021-10-19 14:11:41 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-19 14:13:11 +0200 <merijn> Does the alpine package infrastructure not support separate build and runtime dependencies?
2021-10-19 14:13:13 +0200mei6(~mei@user/mei) (Read error: Connection reset by peer)
2021-10-19 14:13:24 +0200 <ncopa> nope
2021-10-19 14:13:34 +0200 <merijn> Well, RIP
2021-10-19 14:13:43 +0200 <ncopa> alpine is very small and simple
2021-10-19 14:13:58 +0200 <ncopa> well
2021-10-19 14:14:00 +0200 <ncopa> sorry
2021-10-19 14:14:11 +0200 <ncopa> it does support separate build and runtime deps. i misread
2021-10-19 14:19:35 +0200Guest|27(~Guest|27@185.207.140.160)
2021-10-19 14:20:11 +0200Guest|27(~Guest|27@185.207.140.160) (Client Quit)
2021-10-19 14:20:22 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 258 seconds)
2021-10-19 14:21:58 +0200jollygood2(~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-10-19 14:26:26 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-10-19 14:29:45 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-19 14:31:15 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 14:35:56 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-10-19 14:36:14 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-19 14:36:24 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-10-19 14:39:33 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-10-19 14:40:14 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds)
2021-10-19 14:41:40 +0200Farzad(~FarzadBek@178.131.28.133)
2021-10-19 14:41:58 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-10-19 14:42:23 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-10-19 14:43:39 +0200 <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
2021-10-19 14:45:44 +0200 <janus> and why isn't there a flipped version of it so that i can use it like 'whenJust' ?
2021-10-19 14:46:04 +0200 <merijn> What's whenJust?
2021-10-19 14:46:11 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-10-19 14:46:22 +0200 <janus> merijn: https://hackage.haskell.org/package/extra-1.7.10/docs/Control-Monad-Extra.html#v:whenJust
2021-10-19 14:46:25 +0200 <merijn> Isn't that just for/for_
2021-10-19 14:46:35 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2021-10-19 14:46:41 +0200 <merijn> Yeah, that's just for_ :p
2021-10-19 14:46:43 +0200 <merijn> :t for_
2021-10-19 14:46:45 +0200 <lambdabot> (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
2021-10-19 14:46:46 +0200 <merijn> :t forM_
2021-10-19 14:46:48 +0200 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
2021-10-19 14:46:59 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-10-19 14:47:16 +0200 <janus> aaah cool! thank you so much! i should ask relude devs to point that out, hmm
2021-10-19 14:48:08 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-10-19 14:49:00 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-10-19 14:50:53 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-10-19 14:51:36 +0200zebrag(~chris@user/zebrag)
2021-10-19 14:51:44 +0200 <janus> i'll try to ask neil mitchell to point that out in the whenJust docs
2021-10-19 14:53:30 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-10-19 14:53:36 +0200 <janus> how do i reference Data.Foldable.for in haddock syntax?
2021-10-19 14:53:45 +0200 <sshine> 'Data.Foldable.for' ?
2021-10-19 14:54:37 +0200 <janus> sshine: aah ok right, according to section 3.8.7 https://www.haskell.org/haddock/doc/html/ch03s08.html
2021-10-19 14:55:00 +0200 <sshine> yup :)
2021-10-19 14:55:18 +0200 <sshine> not sure how that works across package boundaries.
2021-10-19 14:56:05 +0200 <merijn> sshine: It does, if the module is imported/in scope
2021-10-19 14:56:08 +0200 <sshine> it probably needs to be present when generating the haddock.
2021-10-19 14:56:25 +0200 <sshine> yeah, I was gonna say "in scope", but not in the sense that it needs to be imported in the particular file. right?
2021-10-19 14:56:32 +0200uGest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-19 14:56:39 +0200 <geekosaur> doesn't need to be imported, just known
2021-10-19 14:57:26 +0200 <sshine> it is known, Khaleesi.
2021-10-19 14:57:38 +0200stengah(~stengah@user/stengah) (Ping timeout: 260 seconds)
2021-10-19 14:57:38 +0200 <geekosaur> I think you can point a haddock run to other haddock metadata to use for such references
2021-10-19 14:58:38 +0200ArctVaulMarsHMPJ(~pjetcetal@2.95.44.252)
2021-10-19 14:58:46 +0200jespada(~jespada@2803:9800:9842:7a62:5d33:6404:2aef:9813)
2021-10-19 14:58:58 +0200Guest372(~xxx@47.245.54.240)
2021-10-19 14:59:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 14:59:50 +0200ArctVaulMarsHMPJ(~pjetcetal@2.95.44.252) (Remote host closed the connection)
2021-10-19 15:03:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 252 seconds)
2021-10-19 15:05:00 +0200xiongxin(~quassel@113.116.34.23)
2021-10-19 15:11:07 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) (Quit: WeeChat 2.8)
2021-10-19 15:13:24 +0200slack1256(~slack1256@45.4.2.52)
2021-10-19 15:13:45 +0200max22-(~maxime@2a01cb08833598001d1f311113516d41.ipv6.abo.wanadoo.fr)
2021-10-19 15:18:22 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-19 15:30:30 +0200max22-(~maxime@2a01cb08833598001d1f311113516d41.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-10-19 15:30:56 +0200stengah(~stengah@user/stengah)
2021-10-19 15:42:52 +0200 <ph88> what type should i make to use blaze-html with State monad ?
2021-10-19 15:42:59 +0200 <ph88> https://hackage.haskell.org/package/blaze-html-0.9.1.2
2021-10-19 15:46:21 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-10-19 15:46:50 +0200hendursaga(~weechat@user/hendursaga)
2021-10-19 15:51:05 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-10-19 15:51:59 +0200max22-(~maxime@2a01cb0883359800342ef13833bd6f3b.ipv6.abo.wanadoo.fr)
2021-10-19 15:52:05 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-19 15:52:05 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-19 15:52:05 +0200wroathe(~wroathe@user/wroathe)
2021-10-19 15:57:58 +0200acidjnk_new(~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-19 15:58:10 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-19 15:59:07 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 16:01:48 +0200Midjak(~Midjak@82-65-111-221.subs.proxad.net)
2021-10-19 16:05:33 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-19 16:05:43 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-10-19 16:07:44 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-10-19 16:07:44 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-19 16:11:22 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 16:12:11 +0200xff0x(~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) (Ping timeout: 245 seconds)
2021-10-19 16:12:35 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 16:13:50 +0200stengah(~stengah@user/stengah) (Quit: stengah)
2021-10-19 16:15:05 +0200Guest|60(~Guest|60@ip-95-223-74-231.hsi16.unitymediagroup.de)
2021-10-19 16:15:35 +0200Guest|60(~Guest|60@ip-95-223-74-231.hsi16.unitymediagroup.de) (Client Quit)
2021-10-19 16:15:54 +0200 <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 ?
2021-10-19 16:16:08 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds)
2021-10-19 16:22:52 +0200xff0x(~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267)
2021-10-19 16:23:14 +0200 <Hecate> ph88: book of monads I think
2021-10-19 16:25:55 +0200amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-10-19 16:28:01 +0200ASSISTENZA(~Username@net-47-53-74-164.cust.vodafonedsl.it)
2021-10-19 16:28:19 +0200ASSISTENZA(~Username@net-47-53-74-164.cust.vodafonedsl.it) (Excess Flood)
2021-10-19 16:41:23 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
2021-10-19 16:41:37 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk)
2021-10-19 16:42:11 +0200ASSISTENZA(~Username@net-47-53-74-164.cust.vodafonedsl.it)
2021-10-19 16:42:30 +0200ASSISTENZA(~Username@net-47-53-74-164.cust.vodafonedsl.it) (Excess Flood)
2021-10-19 16:42:48 +0200ASSISTENZA(~Username@net-47-53-74-164.cust.vodafonedsl.it)
2021-10-19 16:44:02 +0200xiongxin(~quassel@113.116.34.23) (Ping timeout: 260 seconds)
2021-10-19 16:44:12 +0200xiongxin_(~quassel@113.116.35.81)
2021-10-19 16:44:57 +0200ASSISTENZA(~Username@net-47-53-74-164.cust.vodafonedsl.it) (Client Quit)
2021-10-19 16:45:52 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 16:46:02 +0200ubert(~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-10-19 16:46:48 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Ping timeout: 258 seconds)
2021-10-19 16:48:14 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9)
2021-10-19 16:48:20 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 258 seconds)
2021-10-19 16:50:46 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds)
2021-10-19 16:51:28 +0200Farzad(~FarzadBek@178.131.28.133) (Quit: Leaving)
2021-10-19 16:51:40 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 16:56:46 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 258 seconds)
2021-10-19 16:58:31 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad)
2021-10-19 16:59:01 +0200wonko(~wjc@62.115.229.50)
2021-10-19 16:59:55 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-19 17:00:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 17:04:37 +0200mc47(~mc47@xmonad/TheMC47) (Client Quit)
2021-10-19 17:05:37 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-10-19 17:05:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds)
2021-10-19 17:07:21 +0200sprout(~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae)
2021-10-19 17:08:19 +0200Sgeo(~Sgeo@user/sgeo)
2021-10-19 17:09:06 +0200hendursaga(~weechat@user/hendursaga)
2021-10-19 17:09:40 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-10-19 17:09:42 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-19 17:09:49 +0200kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-10-19 17:16:29 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-19 17:17:24 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 17:18:10 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) (Quit: WeeChat 2.8)
2021-10-19 17:19:40 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-19 17:19:48 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk)
2021-10-19 17:24:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-19 17:26:49 +0200meltedbrain_y2k(~tekserf@94.73.36.197)
2021-10-19 17:32:30 +0200jstolarek(~jstolarek@137.220.120.162)
2021-10-19 17:33:34 +0200xiongxin_(~quassel@113.116.35.81) (Ping timeout: 258 seconds)
2021-10-19 17:33:42 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-10-19 17:34:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 17:34:32 +0200 <sshine> ph88, you mean nested?
2021-10-19 17:35:10 +0200 <sshine> ph88, https://www.fpcomplete.com/haskell/tutorial/monad-transformers/
2021-10-19 17:36:30 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 17:36:54 +0200 <sshine> I wonder how many kittens god kills when someone writes a tutorial about transformers in particular.
2021-10-19 17:38:04 +0200 <monochrom> I thought there has been too many blogs on that.
2021-10-19 17:38:33 +0200 <monochrom> typeclassopedia has monad transformers
2021-10-19 17:39:08 +0200 <maerwald> and it's a rather disappointing design pattern, is it not?
2021-10-19 17:39:41 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60)
2021-10-19 17:39:55 +0200 <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).
2021-10-19 17:40:12 +0200 <monochrom> I don't find it disappointing.
2021-10-19 17:41:07 +0200 <monochrom> I teach my students String -> Maybe (String, a) as a parser monad, but secretly it's a transformed monad, too.
2021-10-19 17:41:15 +0200 <maerwald> Well, I don't miss them in any other language :p
2021-10-19 17:41:19 +0200 <monochrom> StateT String Maybe
2021-10-19 17:41:27 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 17:42:13 +0200 <maerwald> exactly, state, reader etc are so easy to express without it
2021-10-19 17:43:08 +0200 <maerwald> but given the ecosystem support, it's easier to just give in
2021-10-19 17:44:17 +0200 <monochrom> No. Writing >>= by hand for even String -> Maybe (String, a) gets old pretty quickly.
2021-10-19 17:44:55 +0200 <maerwald> it's our way to emulate OOP, because we want to hide the state object parameter
2021-10-19 17:45:00 +0200 <monochrom> And the code really cries "I am a transformed monad".
2021-10-19 17:45:57 +0200 <monochrom> Let me put it this way.
2021-10-19 17:46:11 +0200 <monochrom> I don't teach monad transformers to students.
2021-10-19 17:46:56 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-10-19 17:47:46 +0200 <monochrom> This allows me to give "challenging" assignments and exam questions that are like, "make this a monad: Bool -> Integer -> ([(a, Integer)], String)"
2021-10-19 17:48:51 +0200 <janus> monochrom: is it this one ? https://www.youtube.com/watch?v=XZxNp7wgA4Q&t=9m20s "MuniHac 2020 Workshop: Michael Sperber - Control your Effects"
2021-10-19 17:48:56 +0200 <monochrom> If only you knew monad transformers, those would be trivial, not challenging.
2021-10-19 17:49:04 +0200 <monochrom> Yeah!
2021-10-19 17:50:13 +0200 <monochrom> Also, I don't think OOP covers the Alternative-ness of my String -> Maybe (String, a) parser monad.
2021-10-19 17:51:06 +0200 <monochrom> Only Haskell and Prolog come close to making choice a first-class thing.
2021-10-19 17:51:23 +0200rkrishnan(~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) (Ping timeout: 264 seconds)
2021-10-19 17:51:26 +0200 <monochrom> I miss it in any other language.
2021-10-19 17:52:06 +0200 <monochrom> The reason you don't miss it in other languages is because you haven't tried to express algorithms in terms of choice.
2021-10-19 17:52:26 +0200 <monochrom> Sapir-Worf strikes once again.
2021-10-19 17:52:54 +0200 <monochrom> If your vocab does not have <|>, you will never miss it, sure.
2021-10-19 17:53:00 +0200 <maerwald> I've completed an entire computational geometry algorithms course in Haskell with zero monad transformers
2021-10-19 17:53:27 +0200 <ph88> do i need a monad transformer when i want to combine blaze-html and state ?
2021-10-19 17:53:29 +0200coot(~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-10-19 17:53:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 17:54:21 +0200 <monochrom> I don't know about "need". You can always try StateT X <which monad blaze-html dictates>".
2021-10-19 17:54:34 +0200 <monochrom> s/which/whichever/
2021-10-19 17:54:55 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2021-10-19 17:57:20 +0200 <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.
2021-10-19 17:57:23 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-10-19 17:57:26 +0200 <ph88> https://www.stephendiehl.com/posts/haskell_web.html
2021-10-19 17:57:39 +0200 <ph88> i guess i can not use transformer when i don't have an inner monad
2021-10-19 17:58:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-19 17:59:30 +0200 <monochrom> Syntactically, you can say that you would complete my course with zero monad transformers, too.
2021-10-19 18:00:30 +0200 <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).
2021-10-19 18:00:38 +0200 <monochrom> Is that supposed to be healthy?
2021-10-19 18:00:41 +0200lbseale(~lbseale@user/ep1ctetus)
2021-10-19 18:00:53 +0200 <maerwald> rust does fine with that
2021-10-19 18:01:08 +0200 <monochrom> But rust is not in my course.
2021-10-19 18:01:12 +0200 <maerwald> not massively more unergonomic
2021-10-19 18:01:30 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-19 18:01:31 +0200 <maerwald> and the tooling works better, so that my code completion actually works :)
2021-10-19 18:02:00 +0200 <maerwald> of course you lack all the neat stuff you can do with monadic combinators
2021-10-19 18:02:02 +0200 <maerwald> but meh
2021-10-19 18:02:32 +0200 <maerwald> I get much more angry about languages that don't provide my with proper ADTs
2021-10-19 18:02:36 +0200 <monochrom> Well yeah I need <|>
2021-10-19 18:02:41 +0200 <kronicmage> maerwald: whats wrong with hls completion? it works beautifully for me
2021-10-19 18:02:48 +0200 <maerwald> kronicmage: not for me
2021-10-19 18:02:54 +0200 <maerwald> probably due to TH
2021-10-19 18:03:07 +0200 <maerwald> crashes a lot
2021-10-19 18:03:14 +0200 <kronicmage> :(
2021-10-19 18:03:26 +0200 <monochrom> which is not even a monadic combinator. It's an alternative combinator.
2021-10-19 18:03:26 +0200 <maerwald> not that I miss TH in any other language ;)
2021-10-19 18:03:52 +0200 <maerwald> TH is probably the least thought-through feature in Haskell
2021-10-19 18:04:07 +0200 <geekosaur> you give it too much credit
2021-10-19 18:04:19 +0200geekosaurdoesn't think it was thought through at all
2021-10-19 18:04:55 +0200 <maerwald> also... do you really want access to the entire AST of the language?
2021-10-19 18:05:00 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-10-19 18:05:05 +0200 <maerwald> and then, it's still not the actual AST
2021-10-19 18:05:09 +0200 <maerwald> confusing
2021-10-19 18:06:10 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-10-19 18:06:29 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-19 18:06:35 +0200 <gentauro> Does GHC run on the M1's?
2021-10-19 18:06:37 +0200 <gentauro> :)
2021-10-19 18:06:47 +0200 <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
2021-10-19 18:06:54 +0200 <maerwald> gentauro: yes
2021-10-19 18:06:56 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-19 18:07:16 +0200 <ph88> gentauro, would be cool if you can benchmark it
2021-10-19 18:07:33 +0200 <maerwald> monochrom: well, I did use <|>
2021-10-19 18:07:58 +0200 <maerwald> https://git.io/J6l6m
2021-10-19 18:08:41 +0200 <maerwald> but attoparsecs parser isn't really a monad transformer
2021-10-19 18:09:17 +0200 <gentauro> maerwald: nice
2021-10-19 18:09:42 +0200 <maerwald> I doubt I would have cared whether it's <|> or some other combinator
2021-10-19 18:09:48 +0200 <gentauro> ph88: by week 44 I will be able to (the M1 MAX) :)
2021-10-19 18:10:25 +0200 <gentauro> ph88: somebody already ask me to benchmark `rust` x
2021-10-19 18:10:27 +0200 <gentauro> xD
2021-10-19 18:11:09 +0200 <monochrom> Sure, my Bool -> Integer -> ([(a, Integer)], String) montrosity is "not" a monad transformer either. Syntactically.
2021-10-19 18:11:13 +0200 <monochrom> Or is it?
2021-10-19 18:12:11 +0200 <monochrom> What does "is" mean?
2021-10-19 18:12:47 +0200 <maerwald> monad transformer to me means ">>= is so overloaded with meaning that you end up reasoning about code operationally"
2021-10-19 18:13:13 +0200poljar(~poljar@93-139-113-226.adsl.net.t-com.hr) (Remote host closed the connection)
2021-10-19 18:13:36 +0200poljar(~poljar@93-139-113-226.adsl.net.t-com.hr)
2021-10-19 18:13:37 +0200 <maerwald> and then it becomes intellectual complexity you carry around, unless you're fine with "it roughly does this"
2021-10-19 18:14:27 +0200 <maerwald> but when you get used to it, then it becomes fine too
2021-10-19 18:14:30 +0200 <maerwald> you train it, so...
2021-10-19 18:14:35 +0200 <maerwald> still doesn't make it a good thing
2021-10-19 18:15:27 +0200 <maerwald> but that's the difference between "I use it" and "I miss this in other languages"
2021-10-19 18:15:36 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-10-19 18:15:49 +0200 <monochrom> I am not sure that you, or anyone, ever do any better than "it roughly does this", in/for/with any language.
2021-10-19 18:15:53 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-19 18:16:09 +0200 <maerwald> there are levels of uncertainty
2021-10-19 18:16:33 +0200 <maerwald> ultimately, we're uncertain what our code does
2021-10-19 18:16:39 +0200jakalx(~jakalx@base.jakalx.net)
2021-10-19 18:16:43 +0200 <maerwald> but that doesn't mean we have to throw away the nuances
2021-10-19 18:16:45 +0200 <gentauro> maerwald: I tend to use `>>=` as the pipe operator in bash: `someLogic >>= \ value -> fooBar value`
2021-10-19 18:16:54 +0200 <gentauro> I find it kind of readable
2021-10-19 18:17:07 +0200 <gentauro> if you are in a monadic context and you use a lot of line-spaces
2021-10-19 18:17:09 +0200 <gentauro> :)
2021-10-19 18:17:27 +0200 <maerwald> would we really use monads that much if we didn't have do-notation?
2021-10-19 18:17:30 +0200 <maerwald> Change my mind!
2021-10-19 18:17:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 18:17:47 +0200 <monochrom> I would. I already did.
2021-10-19 18:17:54 +0200amk(~amk@109.255.169.126)
2021-10-19 18:18:06 +0200 <geekosaur> I use >>= directly a fair amount, if it's short enough
2021-10-19 18:18:20 +0200 <geekosaur> really I only use do because I hate long lines
2021-10-19 18:18:39 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-19 18:19:20 +0200 <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?
2021-10-19 18:19:28 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
2021-10-19 18:19:54 +0200azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-10-19 18:19:55 +0200 <monochrom> A concise way to describe effects.
2021-10-19 18:20:30 +0200 <monochrom> Indeed I have found a way to stick to Alternative in parsers.
2021-10-19 18:21:29 +0200 <geekosaur> if you're using monads just to use monads, you're doing something wrong
2021-10-19 18:21:31 +0200 <monochrom> That doesn't change the real point behind my stance of taking monad transforming as useful though.
2021-10-19 18:21:42 +0200 <monochrom> Because I'm just s/monad/alternative/
2021-10-19 18:21:48 +0200 <geekosaur> but monads do useful things beyond just sequencing effects
2021-10-19 18:22:07 +0200 <maerwald> monochrom: sure, but useful isn't elegant :p
2021-10-19 18:22:19 +0200jstolarek(~jstolarek@137.220.120.162) (Quit: leaving)
2021-10-19 18:22:50 +0200 <maerwald> monads aren't burritos
2021-10-19 18:22:56 +0200 <maerwald> they are cows: useful, but not elegant
2021-10-19 18:23:26 +0200 <monochrom> Handwriting <*> and <|> for String -> [(a, String)] is the inelegant choice. And the missing-the-forest-for-the-trees choice.
2021-10-19 18:24:29 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-19 18:24:38 +0200 <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.
2021-10-19 18:24:46 +0200 <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 `_ <$> … <*>`
2021-10-19 18:24:50 +0200 <monochrom> err
2021-10-19 18:24:59 +0200 <maerwald> I dunno, maybe we'll figure out a better way to express effects/computations one day
2021-10-19 18:25:12 +0200 <monochrom> using that knowledge to connect the <*> and <|> of String -> [(a, String)] to those of State and [].
2021-10-19 18:25:19 +0200 <gentauro> maerwald: I like monadic effects
2021-10-19 18:25:20 +0200 <maerwald> especially in light of combining them
2021-10-19 18:25:37 +0200 <monochrom> There will always be better ways in the future.
2021-10-19 18:25:52 +0200 <maerwald> and there I agree that algebraic effects seem saner, but also more intellectual complexity (polysemy and friends)
2021-10-19 18:26:04 +0200 <maerwald> to the point that no one really understands semantics anymore either
2021-10-19 18:26:31 +0200 <monochrom> For here and now, StateT String [] is the best known fit to my use case.
2021-10-19 18:26:33 +0200 <maerwald> I haven't made up my mind about verbosity
2021-10-19 18:26:52 +0200 <maerwald> I'm fine with verbose languages like rust and python... but damn they make my fingers hurt
2021-10-19 18:27:32 +0200 <monochrom> Indeed StateT String [] is less remotely-abstract than all the more advanced theories. Given that you are against remotely-abstract as a principle.
2021-10-19 18:28:48 +0200 <monochrom> StateT String [] is sufficiently concrete and sufficiently elegant for its purpose.
2021-10-19 18:29:12 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 18:29:19 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-10-19 18:29:28 +0200 <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
2021-10-19 18:29:30 +0200 <maerwald> what to do?
2021-10-19 18:29:33 +0200ph88(~ph88@2a02:8109:9e00:7e5c::3d56) (Remote host closed the connection)
2021-10-19 18:29:45 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2021-10-19 18:30:32 +0200 <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
2021-10-19 18:30:55 +0200 <maerwald> (like not introducing new variables in the middle of a C function)
2021-10-19 18:31:10 +0200 <monochrom> I do that all the time. Bite me.
2021-10-19 18:31:49 +0200 <monochrom> I can be talked into "if you do that, add { } around its real scope" though.
2021-10-19 18:32:24 +0200 <monochrom> But I will refuse "there are only two levels, top and function". Because there aren't.
2021-10-19 18:32:26 +0200 <maerwald> ok, I'm off buying soap (need to clean myself after this conversation)
2021-10-19 18:32:28 +0200 <maerwald> :D
2021-10-19 18:33:02 +0200 <monochrom> There is nothing wrong with "for (int i = ...) { int s = 0; ... }"
2021-10-19 18:33:14 +0200 <maerwald> I think I'd allow that exception
2021-10-19 18:33:32 +0200 <maerwald> also, in rust it's a bit harder to follow this rule
2021-10-19 18:33:53 +0200 <maerwald> because of all the shenanigans you have to do to trick the borrow checker into thinking your code is safe
2021-10-19 18:34:35 +0200 <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.
2021-10-19 18:35:14 +0200 <monochrom> For the former, I have blank lines already. For the latter, that's why I offer "x = 0; { int y; ... } ..."
2021-10-19 18:35:34 +0200 <monochrom> That rule is stupid.
2021-10-19 18:36:02 +0200 <monochrom> I can take everything you said and say it about that rule, too.
2021-10-19 18:36:08 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-10-19 18:36:31 +0200 <maerwald[m]> That was just an example :D
2021-10-19 18:36:35 +0200fendor(~fendor@77.119.169.61.wireless.dyn.drei.com)
2021-10-19 18:36:59 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 264 seconds)
2021-10-19 18:37:04 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 18:37:36 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 18:38:27 +0200 <maerwald[m]> My point was that expressing things, that you can't easily isolate mentally, in a concise way is an open question
2021-10-19 18:38:41 +0200 <maerwald[m]> As to whether that's a good idea
2021-10-19 18:38:47 +0200 <maerwald[m]> I don't really know
2021-10-19 18:38:58 +0200 <monochrom> Oh sure, I balance many factors.
2021-10-19 18:39:23 +0200 <maerwald[m]> My mtl code usually ends up like that: a mess.
2021-10-19 18:39:34 +0200 <monochrom> Mine doesn't.
2021-10-19 18:39:46 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-10-19 18:39:54 +0200 <maerwald[m]> You look at the type signature and go "yeah right, whatever"
2021-10-19 18:40:54 +0200 <monochrom> I don't use MonadState all that much either, if that's what you mean.
2021-10-19 18:41:25 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-10-19 18:41:25 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-19 18:41:42 +0200 <maerwald[m]> MonadIO, MonadUnliftIO, MonadFail, MonadMask, MonadThrow, MonadMe...
2021-10-19 18:41:50 +0200 <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)"
2021-10-19 18:42:02 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 18:42:36 +0200 <monochrom> And I would really love to use the latter in my course if I had time to teach StateT.
2021-10-19 18:43:15 +0200 <monochrom> Then again, if I did that, I would run out of assignment and exam questions.
2021-10-19 18:43:34 +0200 <monochrom> In the same sense as:
2021-10-19 18:43:43 +0200 <maerwald[m]> I forgot obscure LabelOptics
2021-10-19 18:45:12 +0200 <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.
2021-10-19 18:45:58 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-10-19 18:50:25 +0200mastarija(~mastarija@31.217.25.149)
2021-10-19 18:50:40 +0200 <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?
2021-10-19 18:50:48 +0200 <maerwald[m]> Questions
2021-10-19 18:51:23 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-10-19 18:52:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 18:53:47 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-19 18:55:11 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-10-19 18:56:00 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-10-19 18:56:32 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-19 18:58:35 +0200mbuf(~Shakthi@27.58.140.141) (Quit: Leaving)
2021-10-19 19:00:41 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli)
2021-10-19 19:01:34 +0200mastarija_(~mastarija@31.217.25.149)
2021-10-19 19:01:53 +0200mastarija_(~mastarija@31.217.25.149) (Client Quit)
2021-10-19 19:02:00 +0200mastarija(~mastarija@31.217.25.149) (Quit: Leaving)
2021-10-19 19:02:18 +0200emf(~emf@2620:10d:c090:400::5:c0de)
2021-10-19 19:03:27 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-19 19:03:47 +0200alzgh(~alzgh@user/alzgh)
2021-10-19 19:08:29 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-19 19:08:54 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-19 19:12:43 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 19:13:19 +0200xff0x(~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) (Ping timeout: 265 seconds)
2021-10-19 19:13:38 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-19 19:15:28 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-10-19 19:16:39 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-19 19:17:23 +0200xff0x(~xff0x@2001:1a81:5338:8400:382c:44d1:e85b:95f9)
2021-10-19 19:23:12 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-10-19 19:23:33 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-10-19 19:26:07 +0200fendor_(~fendor@77.119.200.149.wireless.dyn.drei.com)
2021-10-19 19:26:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-19 19:27:14 +0200ubert2(~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-19 19:27:14 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
2021-10-19 19:28:18 +0200fendor(~fendor@77.119.169.61.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-10-19 19:29:37 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: No route to host)
2021-10-19 19:30:05 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-10-19 19:31:51 +0200mmhat(~mmh@55d45bcb.access.ecotel.net)
2021-10-19 19:35:17 +0200___________________
2021-10-19 19:35:19 +0200__________noodly
2021-10-19 19:35:23 +0200noodly_________
2021-10-19 19:41:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-10-19 19:41:56 +0200fendor__(~fendor@212095005159.public.telering.at)
2021-10-19 19:42:22 +0200fendor_(~fendor@77.119.200.149.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-10-19 19:43:45 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-19 19:46:26 +0200kuribas(~user@ptr-25vy0i72e2u2h548zvl.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-10-19 19:50:09 +0200coot(~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl)
2021-10-19 19:51:07 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk)
2021-10-19 19:55:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 19:56:33 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 258 seconds)
2021-10-19 19:58:50 +0200Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2021-10-19 19:59:19 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-10-19 20:05:10 +0200peterhil(~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-19 20:12:44 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2021-10-19 20:12:59 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2021-10-19 20:14:16 +0200fendor_(~fendor@178.115.49.60.wireless.dyn.drei.com)
2021-10-19 20:15:36 +0200Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-10-19 20:15:36 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-19 20:15:44 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 20:16:11 +0200Null_A(~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a)
2021-10-19 20:16:50 +0200fendor__(~fendor@212095005159.public.telering.at) (Ping timeout: 260 seconds)
2021-10-19 20:20:47 +0200Null_A(~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Ping timeout: 264 seconds)
2021-10-19 20:23:18 +0200Null_A(~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a)
2021-10-19 20:24:46 +0200marinelli(~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2021-10-19 20:25:11 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-19 20:25:59 +0200ubert(~Thunderbi@91.141.50.28.wireless.dyn.drei.com)
2021-10-19 20:28:03 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-19 20:36:27 +0200econo(uid147250@user/econo)
2021-10-19 20:37:16 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-10-19 20:38:43 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds)
2021-10-19 20:53:45 +0200 <zzz> class Commutative (f :: a -> b -> c) where ?
2021-10-19 20:54:19 +0200 <monochrom> no understand
2021-10-19 20:54:37 +0200 <awpr> `swap :: f a b -> f b a` + law that `swap . swap` is `id`?
2021-10-19 20:54:50 +0200 <awpr> although s/c/Type/ I think
2021-10-19 20:55:01 +0200 <[exa]> I vote for `commute`
2021-10-19 20:55:04 +0200 <zzz> it's not supposed to be understood. just writing nonsense
2021-10-19 20:55:26 +0200 <zzz> [exa]: commute (f a b) = f b a ?
2021-10-19 20:55:29 +0200 <awpr> although it can't have poly-kinds with different kinds for the two sides either
2021-10-19 20:55:38 +0200 <awpr> `f :: k -> k -> Type`
2021-10-19 20:55:59 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 20:57:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 20:57:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 20:58:36 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 21:02:22 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-19 21:03:02 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-19 21:04:35 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-10-19 21:08:56 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection)
2021-10-19 21:10:54 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-19 21:11:24 +0200 <xerox> does anybody know how to find which branch/commit made up the ghc release 9.2.0.20210821 ?
2021-10-19 21:11:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 21:12:05 +0200 <geekosaur> you can query git log by date, that should at least narrow it down
2021-10-19 21:12:57 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-19 21:13:11 +0200 <geekosaur> the branch should be the 9.2 branch
2021-10-19 21:13:18 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-10-19 21:13:32 +0200 <xerox> the 9.2 branch does not build for me, 0.2 seconds into make I get this https://i.imgur.com/DJOMeiZ.png
2021-10-19 21:14:14 +0200 <geekosaur> that one you'll have to ask about in #ghc
2021-10-19 21:14:25 +0200 <xerox> but I guessed since that one built... :)
2021-10-19 21:14:44 +0200 <xerox> nothing comes up green with a search like this https://gitlab.haskell.org/ghc/ghc/-/tags?sort=updated_desc&search=9.2
2021-10-19 21:14:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 21:15:00 +0200 <xerox> nor on the branches
2021-10-19 21:15:28 +0200 <xerox> maerwald: how did you figure out that one in particular built, so you could add it to ghcup?
2021-10-19 21:16:21 +0200lavaman(~lavaman@98.38.249.169)
2021-10-19 21:19:04 +0200Null_A(~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Remote host closed the connection)
2021-10-19 21:20:41 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-19 21:22:25 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds)
2021-10-19 21:23:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 21:27:51 +0200amiroucheamazigh
2021-10-19 21:36:43 +0200 <maerwald> what?
2021-10-19 21:37:41 +0200 <maerwald> https://downloads.haskell.org/~ghc/9.2.1-rc1/
2021-10-19 21:39:44 +0200 <xerox> ah that's what it is
2021-10-19 21:39:57 +0200 <maerwald> probably this https://gitlab.haskell.org/ghc/ghc/-/pipelines/33913
2021-10-19 21:40:06 +0200 <maerwald> go to the pipelines and click on tags
2021-10-19 21:40:11 +0200 <maerwald> https://gitlab.haskell.org/ghc/ghc/-/pipelines?scope=tags&page=1
2021-10-19 21:40:12 +0200 <xerox> maybe I'm asking for trouble using *that* to build another ghc
2021-10-19 21:40:33 +0200 <xerox> everything fails with that error about safe haskell
2021-10-19 21:41:05 +0200 <monochrom> Is that why 9.2 is stalled? That no one knows how to build it now? :)
2021-10-19 21:42:02 +0200 <xerox> using 8.10.7 seems to be liking at least starting to build master, yay
2021-10-19 21:42:25 +0200 <maerwald> xerox: you usually go one major version back
2021-10-19 21:42:29 +0200 <maerwald> for building
2021-10-19 21:43:00 +0200 <xerox> didn't know that!
2021-10-19 21:43:37 +0200Null_A(~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a)
2021-10-19 21:44:20 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3)
2021-10-19 21:44:21 +0200 <geekosaur> 1-2 versions currently accepted. using 9.2 to build 9.2 is I think known not to work
2021-10-19 21:44:30 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Remote host closed the connection)
2021-10-19 21:44:31 +0200 <geekosaur> so 9.0.1 or 8.10.7
2021-10-19 21:44:38 +0200 <xerox> how peculiar
2021-10-19 21:45:02 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3)
2021-10-19 21:45:06 +0200 <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!)
2021-10-19 21:45:28 +0200 <geekosaur> yes
2021-10-19 21:45:31 +0200 <xerox> wow
2021-10-19 21:46:00 +0200 <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
2021-10-19 21:46:37 +0200 <geekosaur> the alternative is -funregisterised which outputs ANSI C
2021-10-19 21:47:30 +0200 <geekosaur> and requires a custom built compiler to enable -funregisterised, since release compilers have it disabled
2021-10-19 21:47:43 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60)
2021-10-19 21:47:50 +0200 <xerox> but can you build such custom comppiler
2021-10-19 21:48:00 +0200evocatus(~evocatus@84.51.113.13)
2021-10-19 21:49:14 +0200 <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
2021-10-19 21:49:20 +0200 <geekosaur> it's a royal pain
2021-10-19 21:49:25 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Ping timeout: 252 seconds)
2021-10-19 21:50:11 +0200 <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
2021-10-19 21:50:37 +0200 <xerox> that seems nice
2021-10-19 21:50:40 +0200 <geekosaur> basically ghc is really not friendly to this kind of thing currently
2021-10-19 21:50:54 +0200 <geekosaur> there's supposedly some work going on to improve things a bit
2021-10-19 21:52:31 +0200nckx(~nckx@tobias.gr) (Quit: Updating my Guix System <https://guix.gnu.org>)
2021-10-19 21:52:33 +0200 <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
2021-10-19 21:53:18 +0200Null_A(~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Ping timeout: 265 seconds)
2021-10-19 21:54:08 +0200lionrouge_(~evocatus@84.51.113.13)
2021-10-19 21:54:33 +0200lionrouge_(~evocatus@84.51.113.13) (Remote host closed the connection)
2021-10-19 21:54:43 +0200nckx(~nckx@tobias.gr)
2021-10-19 21:55:23 +0200wonko(~wjc@62.115.229.50) (Ping timeout: 258 seconds)
2021-10-19 21:57:00 +0200evocatus_(~evocatus@84.51.113.13)
2021-10-19 21:57:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-19 21:58:48 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-19 22:04:41 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
2021-10-19 22:05:34 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 260 seconds)
2021-10-19 22:06:20 +0200Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-10-19 22:07:24 +0200Midjak(~Midjak@82-65-111-221.subs.proxad.net)
2021-10-19 22:07:48 +0200juhp(~juhp@128.106.188.220)
2021-10-19 22:09:35 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 22:12:31 +0200alx741(~alx741@186.178.108.68) (Ping timeout: 252 seconds)
2021-10-19 22:12:46 +0200acidjnk_new(~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de)
2021-10-19 22:14:51 +0200 <xerox> Build completed in 28m59s -- there we go
2021-10-19 22:15:39 +0200 <shapr> 4883 weeds *cries*
2021-10-19 22:15:51 +0200 <shapr> that's from https://github.com/ocharles/weeder
2021-10-19 22:16:51 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 258 seconds)
2021-10-19 22:17:01 +0200k60(~k60@broadband-95-84-168-218.ip.moscow.rt.ru)
2021-10-19 22:18:43 +0200mikoto-chan(~mikoto-ch@185.237.102.114)
2021-10-19 22:19:19 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-10-19 22:20:07 +0200 <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.
2021-10-19 22:20:09 +0200o1lo01ol1o(~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3)
2021-10-19 22:20:16 +0200_xor(~xor@72.49.199.147) (Read error: Connection reset by peer)
2021-10-19 22:20:45 +0200 <juri_> ugh. property tests and doubles are sadness.
2021-10-19 22:21:02 +0200 <sshine> juri_, doubles are sadness.
2021-10-19 22:21:14 +0200 <Hecate> sadness.
2021-10-19 22:21:50 +0200 <juri_> Hecate: you win.
2021-10-19 22:22:46 +0200 <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.
2021-10-19 22:23:28 +0200evocatus_(~evocatus@84.51.113.13) (Quit: Leaving)
2021-10-19 22:23:33 +0200 <sshine> and saying it isn't equal to NaN is about as trivial as saying it isn't equal to anything else.
2021-10-19 22:23:35 +0200evocatus(~evocatus@84.51.113.13) (Quit: Leaving)
2021-10-19 22:23:37 +0200 <awpr> > :t isNaN -- can do this though
2021-10-19 22:23:39 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2021-10-19 22:23:46 +0200 <sshine> awpr, nice.
2021-10-19 22:23:48 +0200 <geekosaur> :t isNaN
2021-10-19 22:23:49 +0200 <lambdabot> RealFloat a => a -> Bool
2021-10-19 22:25:10 +0200elmoloko(~Adium@2600:6c64:4a7f:faa6:2863:d742:7416:5b9e)
2021-10-19 22:26:03 +0200_xor(~xor@72.49.199.147)
2021-10-19 22:26:30 +0200alx741(~alx741@186.178.109.50)
2021-10-19 22:27:52 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk)
2021-10-19 22:29:06 +0200peterhil(~peterhil@mobile-access-56734e-227.dhcp.inet.fi)
2021-10-19 22:29:09 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 22:30:16 +0200mikoto-chan(~mikoto-ch@185.237.102.114) (Ping timeout: 258 seconds)
2021-10-19 22:32:01 +0200mikoto-chan(~mikoto-ch@185.237.102.122)
2021-10-19 22:32:25 +0200mikoto-chan(~mikoto-ch@185.237.102.122) (Client Quit)
2021-10-19 22:37:04 +0200connrs(~connrs@conners.plus.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-19 22:38:01 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-10-19 22:38:14 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-10-19 22:38:17 +0200connrs(~connrs@conners.plus.com)
2021-10-19 22:39:42 +0200random-jellyfish(~random-je@user/random-jellyfish)
2021-10-19 22:46:24 +0200acidjnk_new3(~acidjnk@p200300d0c703cb879d3ec1aa44300f05.dip0.t-ipconnect.de)
2021-10-19 22:46:47 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-10-19 22:49:49 +0200acidjnk_new(~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 22:54:00 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net)
2021-10-19 22:55:35 +0200 <monochrom> > isNan (sqrt (-1))
2021-10-19 22:55:37 +0200 <lambdabot> error:
2021-10-19 22:55:37 +0200 <lambdabot> • Variable not in scope: isNan :: t0 -> t
2021-10-19 22:55:37 +0200 <lambdabot> • Perhaps you meant ‘isNaN’ (imported from Prelude)
2021-10-19 22:55:45 +0200 <monochrom> > isNaN (sqrt (-1))
2021-10-19 22:55:47 +0200 <lambdabot> True
2021-10-19 22:55:51 +0200 <monochrom> > isNaN (1 + sqrt (-1))
2021-10-19 22:55:52 +0200 <lambdabot> True
2021-10-19 22:55:54 +0200 <monochrom> :)
2021-10-19 22:56:11 +0200 <fawful> :)
2021-10-19 22:57:28 +0200 <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.
2021-10-19 23:00:33 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-10-19 23:02:24 +0200 <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
2021-10-19 23:02:52 +0200 <sm> and there might be an issue discussing it
2021-10-19 23:04:50 +0200peterhil(~peterhil@mobile-access-56734e-227.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-19 23:04:53 +0200Megant(megant@user/megant) (Ping timeout: 264 seconds)
2021-10-19 23:04:53 +0200Moyst(~moyst@user/moyst) (Ping timeout: 264 seconds)
2021-10-19 23:06:22 +0200aln448(~aln448@2a00:23c7:3480:b700:fdb9:39e2:1024:88b1)
2021-10-19 23:06:32 +0200acidjnk_new(~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
2021-10-19 23:07:23 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
2021-10-19 23:07:40 +0200 <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?
2021-10-19 23:07:54 +0200 <sm> (I didn't find it, otherwise dig in the history to find out who done it)
2021-10-19 23:07:58 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
2021-10-19 23:08:15 +0200Moyst(~moyst@user/moyst)
2021-10-19 23:08:40 +0200 <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)
2021-10-19 23:08:58 +0200 <aln448> agda with few to no libraries, etc
2021-10-19 23:09:08 +0200 <fawful> :)
2021-10-19 23:09:22 +0200 <aln448> can anyone suggest something fun that might pique my interest and give me a reason to re-learn FP paradigm?
2021-10-19 23:09:31 +0200 <fawful> do you like visual art
2021-10-19 23:09:32 +0200 <sm> project euler problems
2021-10-19 23:09:45 +0200acidjnk_new3(~acidjnk@p200300d0c703cb879d3ec1aa44300f05.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-19 23:09:56 +0200 <aln448> fawful: i'm afraid not
2021-10-19 23:10:16 +0200 <fawful> I find creative projects to motivate me, but you might be different
2021-10-19 23:10:24 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
2021-10-19 23:10:28 +0200 <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
2021-10-19 23:10:32 +0200 <monochrom> Parsing or interpreting of a toy language.
2021-10-19 23:10:39 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
2021-10-19 23:10:57 +0200 <sm> aln448: ok, then the christmas puzzles.. darn what's it called
2021-10-19 23:11:03 +0200 <fawful> try to create a mind out of code
2021-10-19 23:11:08 +0200 <c_wraith> advent of code
2021-10-19 23:11:18 +0200 <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'
2021-10-19 23:11:22 +0200 <sm> ^^
2021-10-19 23:11:22 +0200 <fawful> maybe you will succeed who knows
2021-10-19 23:11:25 +0200 <aln448> advent of code is coming up, that's right
2021-10-19 23:11:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-19 23:11:41 +0200 <monochrom> No, interpreting lisp is boring. Try interpreting a toy prolog.
2021-10-19 23:11:55 +0200 <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.
2021-10-19 23:12:18 +0200 <geekosaur> interpret a toy sml and confuse everyone :þ
2021-10-19 23:12:22 +0200 <aln448> hah
2021-10-19 23:12:33 +0200 <monochrom> intepret C, and turn the table around :)
2021-10-19 23:12:43 +0200 <aln448> was thinking maybe a static site generator, pushing the 'practical' element here
2021-10-19 23:12:45 +0200 <monochrom> In fact it would turn two tables around.
2021-10-19 23:13:07 +0200 <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
2021-10-19 23:13:15 +0200 <aln448> would be interested in anything involved in prop/first/maybe even second (been a while) level logic though
2021-10-19 23:13:38 +0200 <aln448> i kinda missed out on hott the first time around and from blog posts at least, it sounds interesting
2021-10-19 23:13:46 +0200 <monochrom> theorem prover?
2021-10-19 23:13:51 +0200 <sm> if you want practical, how about some new accounting/investing reports for hledger
2021-10-19 23:14:26 +0200 <monochrom> HOL4 is a theorem prover written in SML. So implement an SML interpreter, there you have it?
2021-10-19 23:15:34 +0200 <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.
2021-10-19 23:16:48 +0200 <aln448> perhaps i could implement prelude in some other language?
2021-10-19 23:16:58 +0200 <monochrom> StateT Goal [] to be exact.
2021-10-19 23:18:55 +0200 <monochrom> Err oops, no, more complicated than StateT Goal []
2021-10-19 23:19:35 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-10-19 23:19:57 +0200 <aln448> thanks for the thoughts here guys, some nice ideas
2021-10-19 23:20:35 +0200 <geekosaur> you could also consider contributing to a project; hledger was already mentioned, and xmonad-contrib is always open to new submissions
2021-10-19 23:21:44 +0200 <aln448> i'm familiar with xmonad, and daily-drive dwm, have contributed a bunch of stuff (C though)
2021-10-19 23:22:02 +0200 <aln448> that's perhaps a nice idea - i'm sure there are some plugins for dwm that i could port to xmonad
2021-10-19 23:24:55 +0200cjay(cjay@nerdbox.nerd2nerd.org) (Quit: peepoLeave)
2021-10-19 23:25:15 +0200cjay(cjay@nerdbox.nerd2nerd.org)
2021-10-19 23:26:04 +0200boxscape_(~boxscape_@p54a3581e.dip0.t-ipconnect.de)
2021-10-19 23:26:14 +0200 <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
2021-10-19 23:27:19 +0200 <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
2021-10-19 23:31:05 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection)
2021-10-19 23:31:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc)
2021-10-19 23:31:32 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-19 23:31:45 +0200coot(~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-10-19 23:35:39 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection)
2021-10-19 23:35:46 +0200fendor_(~fendor@178.115.49.60.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-19 23:40:27 +0200random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2021-10-19 23:42:14 +0200michalz(~michalz@185.246.204.77) (Remote host closed the connection)
2021-10-19 23:43:16 +0200Null_A(~null_a@2601:645:8700:2290:a94b:e46c:6690:e477)
2021-10-19 23:44:32 +0200 <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.
2021-10-19 23:44:42 +0200 <dsal> I think a few from last year were solved almost entirely in the parser.
2021-10-19 23:45:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-19 23:49:02 +0200pavonia(~user@user/siracusa)
2021-10-19 23:49:38 +0200slack1256(~slack1256@45.4.2.52) (Ping timeout: 265 seconds)
2021-10-19 23:53:04 +0200pmk(~user@2a02:587:9418:a234:40de:ca53:4e3:4a70) (Ping timeout: 258 seconds)
2021-10-19 23:54:12 +0200ubert(~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-19 23:59:28 +0200burnsidesLlama(~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection)