2021/07/17

2021-07-17 00:03:38 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds)
2021-07-17 00:03:44 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-17 00:05:14 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-17 00:05:41 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-17 00:09:14 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-07-17 00:09:14 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 258 seconds)
2021-07-17 00:10:11 +0200shailangsa(~shailangs@host86-186-196-229.range86-186.btcentralplus.com)
2021-07-17 00:14:51 +0200KUrare(~KUrare@user/kurare) (Remote host closed the connection)
2021-07-17 00:15:07 +0200s_(~slycelote@user/slycelote) (Quit: Leaving)
2021-07-17 00:15:16 +0200KUrare(~KUrare@user/kurare)
2021-07-17 00:15:18 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
2021-07-17 00:19:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-17 00:20:08 +0200 <c_wraith> Hmm. how does one make haddock render README.md into the index file?
2021-07-17 00:20:14 +0200oxide_(~lambda@user/oxide) (Read error: Connection reset by peer)
2021-07-17 00:21:34 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
2021-07-17 00:23:25 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds)
2021-07-17 00:23:40 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-17 00:24:43 +0200slycelote(~slycelote@user/slycelote)
2021-07-17 00:27:37 +0200h98(~h98@187.83.249.216.dyn.smithville.net)
2021-07-17 00:29:50 +0200chomwitt(~Pitsikoko@2a02:587:dc02:3500:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-07-17 00:30:07 +0200chomwitt(~Pitsikoko@2a02:587:dc02:3500:12c3:7bff:fe6d:d374)
2021-07-17 00:30:27 +0200bgamari(~bgamari@72.65.101.148) (Ping timeout: 265 seconds)
2021-07-17 00:32:18 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-17 00:32:48 +0200bgamari(~bgamari@72.65.101.148)
2021-07-17 00:34:23 +0200acidjnk(~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-17 00:34:50 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-17 00:37:39 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-17 00:38:33 +0200 <h98> I want a type family "Unwrap a" where if I write "newtype Foo = F Bar" then "Unwrap Foo = Bar"...is this impossible without writing it out explicitly because the left side of the newtype doesn't reference the wrapped type?
2021-07-17 00:42:02 +0200 <geekosaur> you might be interested in Coercible
2021-07-17 00:42:18 +0200 <geekosaur> in short, it already exists
2021-07-17 00:43:27 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-07-17 00:44:50 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-07-17 00:45:13 +0200 <sm> or Witch
2021-07-17 00:48:18 +0200 <h98> yeah I know I can coerce (I can also just do it another way), I was just wondering if there was an easy way to write this as a type family
2021-07-17 00:48:20 +0200KUrare(~KUrare@user/kurare) (Ping timeout: 265 seconds)
2021-07-17 00:49:29 +0200 <h98> obviously Unwrap (f a) = a doesn't work because "Foo" doesn't match "f a" in "newtype Foo = F Bar"
2021-07-17 00:55:33 +0200chomwitt(~Pitsikoko@2a02:587:dc02:3500:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-07-17 00:55:44 +0200bgamari_(~bgamari@72.65.101.148)
2021-07-17 00:55:45 +0200 <davean> h98: theres no information at the type level about what is in Foo, so no
2021-07-17 00:55:50 +0200chomwitt(~Pitsikoko@2a02:587:dc02:3500:12c3:7bff:fe6d:d374)
2021-07-17 00:56:06 +0200bgamari(~bgamari@72.65.101.148) (Ping timeout: 268 seconds)
2021-07-17 00:56:41 +0200 <davean> coerce doesn't even do this, coerce talks about representations matching
2021-07-17 00:57:16 +0200 <h98> okay that makes sense; thanks!
2021-07-17 00:57:48 +0200 <davean> (This is what type role "nominal" deals with actually!)
2021-07-17 01:01:31 +0200chomwitt(~Pitsikoko@2a02:587:dc02:3500:12c3:7bff:fe6d:d374) (Ping timeout: 246 seconds)
2021-07-17 01:11:40 +0200noctux(~noctux@user/noctux) (Read error: Connection reset by peer)
2021-07-17 01:12:09 +0200noctux(~noctux@user/noctux)
2021-07-17 01:15:10 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-07-17 01:16:05 +0200noctux(~noctux@user/noctux) (Remote host closed the connection)
2021-07-17 01:17:23 +0200Null_A(~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4) (Remote host closed the connection)
2021-07-17 01:17:27 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-17 01:18:59 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-07-17 01:19:22 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-17 01:20:16 +0200noctux(~noctux@user/noctux)
2021-07-17 01:24:17 +0200dhouthoo_(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-07-17 01:26:04 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-17 01:26:04 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-17 01:27:18 +0200allbery_bgeekosaur
2021-07-17 01:30:19 +0200pavonia(~user@user/siracusa)
2021-07-17 01:31:32 +0200jol(~jol@jol.dev) (Quit: WeeChat 3.2)
2021-07-17 01:35:34 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-07-17 01:35:51 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-17 01:37:12 +0200Guest8638(~Guest86@50.47.115.102)
2021-07-17 01:38:37 +0200h98(~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2021-07-17 01:38:57 +0200notzmv(~zmv@user/notzmv)
2021-07-17 01:39:27 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 255 seconds)
2021-07-17 01:40:08 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-17 01:41:21 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-17 01:52:57 +0200GZJ0X_(~GZJ0X@199.193.127.138.16clouds.com) (Ping timeout: 255 seconds)
2021-07-17 01:56:00 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-07-17 01:56:17 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-17 01:56:58 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 265 seconds)
2021-07-17 02:00:47 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-07-17 02:04:56 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-17 02:11:31 +0200maerwald(~maerwald@user/maerwald) (Ping timeout: 258 seconds)
2021-07-17 02:12:13 +0200Guest8638(~Guest86@50.47.115.102) (Ping timeout: 246 seconds)
2021-07-17 02:15:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 02:16:34 +0200mrus(~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) (Ping timeout: 240 seconds)
2021-07-17 02:16:54 +0200Maxdaman1us(~Maxdamant@user/maxdamantus)
2021-07-17 02:16:55 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 02:16:56 +0200derelict(~derelict@user/derelict)
2021-07-17 02:18:20 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2021-07-17 02:18:42 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
2021-07-17 02:21:29 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
2021-07-17 02:24:09 +0200Null_A(~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4)
2021-07-17 02:24:45 +0200DNH(~DNH@2a02:8108:1100:16d8:c4df:67d7:d0ec:2764) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-17 02:27:01 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-07-17 02:27:59 +0200turlando(~turlando@user/turlando) (Ping timeout: 268 seconds)
2021-07-17 02:39:27 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-17 02:39:53 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
2021-07-17 02:40:27 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-17 02:41:39 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-17 02:44:07 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-17 02:46:22 +0200Null_A(~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4) (Remote host closed the connection)
2021-07-17 02:50:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-17 02:52:21 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
2021-07-17 02:54:24 +0200orzo_orzo
2021-07-17 02:57:17 +0200lbseale_(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-07-17 03:10:04 +0200 <lechner> Hi, would someone please be so kind and show me how to use iterateM_ here. I am having a hard time with it. https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L100
2021-07-17 03:11:26 +0200maerwald(~maerwald@mail.hasufell.de)
2021-07-17 03:14:15 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
2021-07-17 03:14:20 +0200 <davean> lechner: you haven't said what you're trying to do because theres not even an attempt to use iterateM_ there
2021-07-17 03:15:28 +0200pesada(~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100)
2021-07-17 03:18:24 +0200 <lechner> well, i'd like to implement a counter for the files received. someone here kindly recommended iterateM_ but i am a noobie. i watched this video but can't even separate out the function after 'forever' https://www.youtube.com/watch?v=CFnx1_UjwXs
2021-07-17 03:18:38 +0200agua(~agua@2804:18:7e:a02e:1:0:239f:a7bb) (Ping timeout: 255 seconds)
2021-07-17 03:18:58 +0200 <lechner> the forever is in my code
2021-07-17 03:19:48 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 255 seconds)
2021-07-17 03:21:11 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-07-17 03:22:15 +0200maerwald(~maerwald@mail.hasufell.de) (Ping timeout: 268 seconds)
2021-07-17 03:22:36 +0200Atum_(IRC@user/atum/x-2392232) (Quit: Atum_)
2021-07-17 03:24:45 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-17 03:25:39 +0200agua(~agua@2804:18:7e:a02e:1:0:239f:a7bb)
2021-07-17 03:25:54 +0200ukari(~ukari@user/ukari)
2021-07-17 03:26:04 +0200xff0x(~xff0x@2001:1a81:53d5:b900:59f3:4e1e:9577:2243) (Ping timeout: 246 seconds)
2021-07-17 03:28:06 +0200xff0x(~xff0x@2001:1a81:5219:9d00:b696:f328:1841:5724)
2021-07-17 03:28:10 +0200pesada(~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 246 seconds)
2021-07-17 03:29:56 +0200 <dsal> lechner: It's flipped for your needs, so something like: flip iterateM_ 1 $ \n -> do ...
2021-07-17 03:30:57 +0200 <dsal> Then like `pure n'` at the end once you've decided whether there's a message or not.
2021-07-17 03:32:42 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
2021-07-17 03:33:22 +0200 <lechner> dsal: why is it flipped, please?
2021-07-17 03:33:43 +0200 <dsal> Or you make `county n = iterateM_ (\x -> a x >> pure (x +1)) 0` and just call `county $ \x -> do ...`
2021-07-17 03:34:11 +0200 <dsal> Well, the initial argument goes at the end and that's pretty awkward to supply with a do block.
2021-07-17 03:34:48 +0200 <geekosaur> did you switch n and a there?
2021-07-17 03:35:00 +0200 <lechner> ah, yes! that was one of my many issues
2021-07-17 03:35:49 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-07-17 03:38:05 +0200neurocyte1(~neurocyte@94.16.90.109)
2021-07-17 03:38:05 +0200neurocyte1(~neurocyte@94.16.90.109) (Changing host)
2021-07-17 03:38:05 +0200neurocyte1(~neurocyte@user/neurocyte)
2021-07-17 03:40:07 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-17 03:40:45 +0200neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
2021-07-17 03:40:45 +0200neurocyte1neurocyte
2021-07-17 03:41:11 +0200 <dsal> Heh. Yeah, I'm barely conscious right now. heh
2021-07-17 03:42:05 +0200 <dsal> `county a` for passing an iteration count to the action `a`. If every iteration will process a message, it's probably a useful abstraction that will make it easier to read your stuff.
2021-07-17 03:42:15 +0200 <dsal> Also maybe name it something not stupid.
2021-07-17 03:44:19 +0200 <dsal> lechner: Consider that abstraction, though. Whatever bugs I typed into irc are there to help you learn.
2021-07-17 03:48:03 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
2021-07-17 03:49:50 +0200pesada(~agua@2804:18:48:588b:1:0:277e:35b0)
2021-07-17 03:50:08 +0200agua(~agua@2804:18:7e:a02e:1:0:239f:a7bb) (Ping timeout: 255 seconds)
2021-07-17 03:50:46 +0200matsurago(~matsurago@p0111162-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp)
2021-07-17 03:51:29 +0200derelict(~derelict@user/derelict) (Ping timeout: 255 seconds)
2021-07-17 03:54:28 +0200 <lechner> dsal: yay, it compiled. thanks so much! i am on a production system and will test it on Sunday. i'll also look into abstractions like you suggested. (and read up on 'pure', as i tried to use 'return')
2021-07-17 03:58:07 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-17 03:59:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-07-17 04:00:17 +0200maerwald(~maerwald@mail.hasufell.de)
2021-07-17 04:02:35 +0200andrews(~andrews@user/andrews)
2021-07-17 04:02:56 +0200dajoer(~david@user/gvx)
2021-07-17 04:05:15 +0200andrews(~andrews@user/andrews) (Client Quit)
2021-07-17 04:06:31 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds)
2021-07-17 04:11:57 +0200alx741(~alx741@181.196.68.89) (Quit: alx741)
2021-07-17 04:12:08 +0200 <sm> hey all. Any doctest users aware of a change in default scope/binding rules with GHC 9.0 ? https://github.com/sol/doctest/issues/301
2021-07-17 04:15:02 +0200alx741(~alx741@181.196.68.89)
2021-07-17 04:15:20 +0200td_(~td@94.134.91.148) (Ping timeout: 255 seconds)
2021-07-17 04:15:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 04:16:57 +0200td_(~td@muedsl-82-207-238-255.citykom.de)
2021-07-17 04:16:59 +0200zebrag(~chris@user/zebrag) (Read error: Connection reset by peer)
2021-07-17 04:18:34 +0200 <lechner> sm: hi, i just connected a few dots. thanks for hledger!
2021-07-17 04:19:36 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
2021-07-17 04:20:23 +0200sim590(~simon@23.233.248.248)
2021-07-17 04:20:56 +0200keutoi(~keutoi@157.48.206.170)
2021-07-17 04:21:28 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-07-17 04:25:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-07-17 04:27:23 +0200 <janus> sm: do you think it might be related to "GADT constructor types now properly adhere to The forall-or-nothing rule" ?
2021-07-17 04:28:05 +0200 <sm> lechner: youre welcome!
2021-07-17 04:28:31 +0200 <sm> janus: hmm let me read up on that
2021-07-17 04:30:49 +0200 <sm> another possible thing I've noticed, derived JSON instances preserving the order of fields with GHC 9.0 (despite same versions of aeson) ?
2021-07-17 04:31:07 +0200 <sm> with GHC 8.10 they seemed randomised
2021-07-17 04:34:11 +0200__xor_xor
2021-07-17 04:37:29 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-07-17 04:39:57 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-07-17 04:40:49 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 04:42:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 04:45:30 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-07-17 04:46:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 04:47:07 +0200Maxdaman1usMaxdamantus
2021-07-17 04:47:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-07-17 04:47:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 05:02:36 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-17 05:05:59 +0200img(~img@user/img)
2021-07-17 05:18:16 +0200 <dsal> lechner: `return` is almost always just a longer, more confusing way of spelling `pure`
2021-07-17 05:19:24 +0200 <sm> janus: I don't think so
2021-07-17 05:20:18 +0200 <janus> i wonder if it is really a doctest issue? because surely, doctest shouldn't worry too much about 'low-level' things such as binding names?
2021-07-17 05:20:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-17 05:20:55 +0200 <janus> if it is related to simplified subsumption or the for-all issue, it should be reproducable outside a doctest...
2021-07-17 05:21:26 +0200 <janus> oh well, i don't know what i am saying, just thinking out loud ;)
2021-07-17 05:21:48 +0200 <sm> yes.. I must dig deeper
2021-07-17 05:39:41 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-17 05:41:37 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection)
2021-07-17 05:54:52 +0200derelict(~derelict@user/derelict)
2021-07-17 05:58:16 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-07-17 05:59:01 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-17 06:01:43 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 06:06:48 +0200 <sm> well it's simply that the bindings in current module (in which the doctests are embedded are not in scope by default
2021-07-17 06:07:06 +0200 <sm> which is.. inconvenient
2021-07-17 06:09:26 +0200 <janus> oh, now i see why you think it is a doctest issue
2021-07-17 06:09:58 +0200 <janus> i think one argument for the doctest-like in cabal-extras is that it is more robust... i havn't tried it though
2021-07-17 06:16:06 +0200mrus(~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820)
2021-07-17 06:17:44 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 255 seconds)
2021-07-17 06:32:36 +0200alekhine(~alekhine@c-73-38-152-33.hsd1.ma.comcast.net)
2021-07-17 06:34:54 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-17 06:35:46 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
2021-07-17 06:45:48 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection)
2021-07-17 06:48:35 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
2021-07-17 06:50:46 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-17 06:51:20 +0200vysn(~vysn@user/vysn)
2021-07-17 06:53:06 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Ping timeout: 255 seconds)
2021-07-17 07:00:08 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-17 07:03:12 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-17 07:03:40 +0200xkuru(~xkuru@user/xkuru)
2021-07-17 07:04:06 +0200xkuru(~xkuru@user/xkuru) (Client Quit)
2021-07-17 07:05:12 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-17 07:07:39 +0200xkuru(~xkuru@user/xkuru)
2021-07-17 07:09:22 +0200xkuru(~xkuru@user/xkuru) (Client Quit)
2021-07-17 07:09:47 +0200hexeme(~hexeme@user/hexeme) (Quit: co'o ro do)
2021-07-17 07:11:18 +0200hexeme(~hexeme@user/hexeme)
2021-07-17 07:17:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 07:21:42 +0200Guest9(~Guest9@43.242.116.127)
2021-07-17 07:26:35 +0200keutoi(~keutoi@157.48.206.170) (Ping timeout: 255 seconds)
2021-07-17 07:34:49 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-07-17 07:34:53 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97)
2021-07-17 07:45:29 +0200hexeme(~hexeme@user/hexeme) (Quit: co'o ro do)
2021-07-17 07:45:35 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 07:47:51 +0200hexeme(~hexeme@user/hexeme)
2021-07-17 07:48:37 +0200alekhine(~alekhine@c-73-38-152-33.hsd1.ma.comcast.net) (Quit: Konversation terminated!)
2021-07-17 07:48:49 +0200qbt(~edun@user/edun)
2021-07-17 07:49:46 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-07-17 07:50:15 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
2021-07-17 07:50:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-07-17 07:51:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-17 07:53:52 +0200Null_A(~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection)
2021-07-17 07:58:31 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-17 07:58:49 +0200img(~img@user/img)
2021-07-17 08:02:07 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-07-17 08:02:09 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-07-17 08:02:09 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-07-17 08:02:09 +0200turlando(~turlando@user/turlando)
2021-07-17 08:03:48 +0200sim590(~simon@23.233.248.248) (Ping timeout: 258 seconds)
2021-07-17 08:06:20 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 08:06:28 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-17 08:07:01 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 08:07:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 08:11:19 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
2021-07-17 08:12:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-07-17 08:14:10 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Reconnecting)
2021-07-17 08:14:25 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-07-17 08:15:18 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Client Quit)
2021-07-17 08:15:33 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-07-17 08:15:50 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
2021-07-17 08:15:50 +0200zfnmxt(~zfnmxtzfn@user/zfnmxt)
2021-07-17 08:21:51 +0200zmt00(~zmt00@user/zmt00) (Quit: Gone.)
2021-07-17 08:24:46 +0200zmt00(~zmt00@user/zmt00)
2021-07-17 08:26:36 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving)
2021-07-17 08:31:12 +0200dunkeln(~dunkeln@94.128.224.230)
2021-07-17 08:34:46 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-17 08:36:48 +0200earthy(~arthurvl@deban2.xs4all.space) (Quit: WeeChat 2.3)
2021-07-17 08:42:34 +0200earthy(~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0)
2021-07-17 08:45:55 +0200keutoi(~keutoi@157.48.202.216)
2021-07-17 08:56:14 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 09:00:55 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-07-17 09:01:26 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-17 09:01:29 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-17 09:02:14 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 09:04:14 +0200Guest9(~Guest9@43.242.116.127) (Ping timeout: 255 seconds)
2021-07-17 09:11:42 +0200matsurago(~matsurago@p0111162-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp) (Quit: Leaving)
2021-07-17 09:18:49 +0200fef(~thedawn@user/thedawn)
2021-07-17 09:24:14 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-17 09:24:49 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-17 09:26:53 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 09:30:58 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-17 09:31:04 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 09:33:03 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-07-17 09:33:10 +0200agua(~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100)
2021-07-17 09:33:39 +0200hololeap(~hololeap@user/hololeap)
2021-07-17 09:35:33 +0200pesada(~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 255 seconds)
2021-07-17 09:35:39 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-07-17 09:39:41 +0200 <arahael> I'm trying to learn how to use "Arrows" (aka HXT), in order to have an 'elegant' way to convert my data types to XML. To do this, I've tried to define a type class that defines `class ToXml a where xml :: IOStateArrow s a XmlTree`, but I don't think I'm doing it right and I would need a phantom-type anyway to use a type class like that. How should I be doing this?
2021-07-17 09:41:09 +0200 <arahael> I want to allow my "toXml" routines to potentially use state as they may need to obtain more informatio than what is captured in my values. (Eg, to look up and resolve stuff from a database)
2021-07-17 09:42:31 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-17 09:43:15 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-17 09:46:05 +0200acidjnk(~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de)
2021-07-17 09:47:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 09:49:18 +0200dragestil(~znc@user/dragestil)
2021-07-17 09:50:17 +0200 <arahael> I'm thinking of avoiding arrows entirely, and just define xml like so: `xml :: a -> State s XmlTree`
2021-07-17 09:50:31 +0200 <arahael> (Well, XmlTrees, really)
2021-07-17 09:50:38 +0200dunkeln(~dunkeln@94.128.224.230) (Ping timeout: 265 seconds)
2021-07-17 09:51:05 +0200 <c_wraith> "avoid them entirely" has been my experience with arrows
2021-07-17 09:52:35 +0200 <arahael> Heh. Thing is, arrows _sound_ like they'd be nice for what is largely xml transformations.
2021-07-17 09:54:35 +0200benin0369(~benin@183.82.204.139) (Ping timeout: 258 seconds)
2021-07-17 09:56:39 +0200fendor(~fendor@77.119.192.173.wireless.dyn.drei.com)
2021-07-17 09:57:47 +0200_xor(~xor@74.215.232.67) (Quit: WeeChat 3.2)
2021-07-17 09:58:55 +0200_xor(~xor@74.215.232.67)
2021-07-17 09:59:31 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-17 09:59:50 +0200benin0369(~benin@183.82.206.198)
2021-07-17 10:00:21 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection)
2021-07-17 10:00:53 +0200Pickchea(~private@user/pickchea)
2021-07-17 10:01:47 +0200GIANTWORLDKEEPR_(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
2021-07-17 10:02:37 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
2021-07-17 10:02:53 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection)
2021-07-17 10:04:20 +0200 <arahael> Yeah, I can't even find an example for this, I'm going to give up on using arrows for transforming to xml.
2021-07-17 10:05:27 +0200chomwitt(~Pitsikoko@athedsl-32487.home.otenet.gr)
2021-07-17 10:07:11 +0200hendursa1(~weechat@user/hendursaga)
2021-07-17 10:09:45 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-17 10:10:59 +0200dunkeln_(~dunkeln@94.128.224.230)
2021-07-17 10:13:56 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 10:15:45 +0200favonia(~favonia@user/favonia) (Ping timeout: 250 seconds)
2021-07-17 10:17:13 +0200 <arahael> Yep, I think I should definitely just use the `xml :: a -> State MyState XmlTrees` design. Less flexible, but more sane.
2021-07-17 10:17:35 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-17 10:17:38 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-17 10:18:30 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2021-07-17 10:21:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-07-17 10:23:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 10:26:16 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-07-17 10:26:24 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-17 10:28:09 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2021-07-17 10:28:15 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 10:29:33 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2021-07-17 10:29:36 +0200Lord_of_Life_Lord_of_Life
2021-07-17 10:30:06 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-07-17 10:30:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 10:32:42 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-17 10:35:42 +0200Deide(~Deide@217.155.19.23)
2021-07-17 10:35:42 +0200Deide(~Deide@217.155.19.23) (Changing host)
2021-07-17 10:35:42 +0200Deide(~Deide@user/deide)
2021-07-17 10:38:04 +0200Ouroborosie(~pjetcetal@128-71-13-182.broadband.corbina.ru)
2021-07-17 10:39:21 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-07-17 10:42:23 +0200Voxelman(~Voxelman@185.254.75.32)
2021-07-17 10:46:01 +0200 <arahael> Actually I'm weirdly stumped, I've fallen into a deep hole: How do I print XML? I've been parsing with HXT for most of my programs, so ideally I'd like to use the same data types, but how do I print it?
2021-07-17 10:46:28 +0200 <arahael> This page has some examples: https://hackage.haskell.org/package/hxt-9.3.1.22/docs/Text-XML-HXT-Arrow-WriteDocument.html
2021-07-17 10:46:51 +0200sagax(~sagax@213.138.71.146)
2021-07-17 10:47:13 +0200 <arahael> But... They don't work, at all, when using the sample XmlTree: foo = Ntree (XTag (mkName "foo") []) []
2021-07-17 10:47:21 +0200 <arahael> The writeDocument just does nothing at all.
2021-07-17 10:47:36 +0200 <arahael> *NTree
2021-07-17 10:49:33 +0200 <arahael> So I'm completely stumped as to why this doesn't work: runX (arr (const foo) >>> writeDocument [] "")
2021-07-17 10:49:45 +0200 <arahael> (It compiles and runs, though(!))
2021-07-17 10:51:04 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-07-17 10:52:55 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-17 10:54:18 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-07-17 10:54:42 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-17 10:54:42 +0200 <arahael> I think I need to give up on this HXT, it seems seriously badly documented. :( Maybe I should try something like xml-hamlet.
2021-07-17 10:55:01 +0200azeem(~azeem@176.200.202.21)
2021-07-17 10:56:41 +0200superbil(~superbil@1-34-176-171.HINET-IP.hinet.net) (Quit: WeeChat 3.1)
2021-07-17 10:58:20 +0200mcfrdy(uid507892@user/mcfrdy) ()
2021-07-17 10:59:26 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-07-17 10:59:29 +0200 <arahael> Oh, wow, just got output.
2021-07-17 11:01:48 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-07-17 11:03:45 +0200Pickchea(~private@user/pickchea) (Ping timeout: 255 seconds)
2021-07-17 11:04:24 +0200 <arahael> Yep, seems the only thing I was missing was the root node. HXT just silently ignores that.
2021-07-17 11:06:15 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-17 11:07:33 +0200dunkeln_(~dunkeln@94.128.224.230) (Quit: leaving)
2021-07-17 11:10:26 +0200azeem(~azeem@176.200.202.21) (Read error: Connection reset by peer)
2021-07-17 11:10:42 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
2021-07-17 11:13:23 +0200xff0x(~xff0x@2001:1a81:5219:9d00:b696:f328:1841:5724) (Ping timeout: 255 seconds)
2021-07-17 11:14:17 +0200xff0x(~xff0x@2001:1a81:5219:9d00:3d14:ef54:1c92:a192)
2021-07-17 11:18:14 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2021-07-17 11:18:20 +0200acidjnk(~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-17 11:18:27 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-17 11:18:57 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 11:21:34 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-17 11:23:06 +0200mcfrdy(~mcfrdy@user/mcfrdy)
2021-07-17 11:23:17 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
2021-07-17 11:28:10 +0200fef(~thedawn@user/thedawn)
2021-07-17 11:29:40 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-07-17 11:31:21 +0200amanr(~therojjha@20.204.87.0)
2021-07-17 11:32:14 +0200_xor(~xor@74.215.232.67) (Quit: brb)
2021-07-17 11:32:28 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-07-17 11:33:09 +0200Codaraxis(~Codaraxis@user/codaraxis) (Remote host closed the connection)
2021-07-17 11:33:34 +0200Codaraxis(~Codaraxis@user/codaraxis)
2021-07-17 11:42:26 +0200_xor(~xor@74.215.232.67)
2021-07-17 11:47:18 +0200oxide(~lambda@user/oxide)
2021-07-17 11:50:23 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 11:53:10 +0200_xor(~xor@74.215.232.67) (Quit: WeeChat 3.2)
2021-07-17 11:53:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-17 11:54:15 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 11:54:51 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-07-17 11:57:44 +0200acidjnk(~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de)
2021-07-17 11:58:47 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-07-17 11:59:17 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2021-07-17 12:04:06 +0200slycelote(~slycelote@user/slycelote) (Read error: Connection reset by peer)
2021-07-17 12:04:18 +0200slycelote(~slycelote@user/slycelote)
2021-07-17 12:05:07 +0200_xor(~xor@74.215.232.67)
2021-07-17 12:08:35 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-17 12:13:30 +0200fef(~thedawn@user/thedawn)
2021-07-17 12:14:55 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-17 12:19:06 +0200chomwitt(~Pitsikoko@athedsl-32487.home.otenet.gr) (Ping timeout: 258 seconds)
2021-07-17 12:20:09 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-07-17 12:23:17 +0200 <arkanoid> the Error monad link is broken https://wiki.haskell.org/Errormonad.html
2021-07-17 12:23:17 +0200zaquest(~notzaques@5.128.210.178)
2021-07-17 12:23:34 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 12:28:54 +0200DNH(~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89)
2021-07-17 12:29:15 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
2021-07-17 12:29:41 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 12:30:59 +0200qbt(~edun@user/edun) (Ping timeout: 258 seconds)
2021-07-17 12:34:12 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-17 12:34:54 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host)
2021-07-17 12:38:52 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-17 12:42:55 +0200Voxelman(~Voxelman@185.254.75.32) (Read error: Connection reset by peer)
2021-07-17 12:43:37 +0200mrus(~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) (Ping timeout: 246 seconds)
2021-07-17 12:44:16 +0200kuribas(~user@ptr-25vy0i9ash1yu2tubi9.18120a2.ip6.access.telenet.be)
2021-07-17 12:45:22 +0200 <kuribas> How does haskell compare to other functional languages? Looking a bit at SML and OCaml, it seems that haskell has far more libraries, and is more practical for real world projects (other than compilers etc).
2021-07-17 12:46:31 +0200 <kuribas> Of course scala and clojure are also popular, but I don't consider clojure a real functional language, it's more a lisp derivative. And Scala is mostly multiparadigm, and also complex and overengineerd.
2021-07-17 12:47:48 +0200 <arahael> kuribas: I use haskell for most of my private hobby/side projects. It's awesule, but I've used F# and Swift, which are somewhat OCaml-inspired.
2021-07-17 12:48:25 +0200 <arahael> kuribas: The biggest most profound difference with Haskell is that it's *lazy*, and has a really really good type system, but in practice that it's lazy makes a big difference to how you use haskell.
2021-07-17 12:48:52 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 246 seconds)
2021-07-17 12:48:54 +0200 <kuribas> arahael: how much libraries are there for F#? Or does it just use the C# ecosystem?
2021-07-17 12:49:05 +0200 <arahael> F# is just another .NET language, really, yeah.
2021-07-17 12:49:17 +0200 <arahael> As is C#. :)
2021-07-17 12:49:20 +0200 <kuribas> doesn't that mean that most libraries aren't really made for FP?
2021-07-17 12:49:27 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-17 12:50:00 +0200 <arahael> Kinda. The way F# copes with nulls is interesting. (It assumes there aren't any).
2021-07-17 12:50:41 +0200 <kuribas> then how do you test if a function returns null?
2021-07-17 12:51:33 +0200 <arahael> kuribas: That's a trap, yeah. In earlier versions, you'd check for it explicitly, and the compiler lets you. But then, the compiler *elides* that check because it thinks better.
2021-07-17 12:51:44 +0200 <arahael> Hopefully they've changed that now.
2021-07-17 12:53:33 +0200 <arahael> Looks like they've changed it - suggesting instead to use pattern matching. Far better: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/values/null-values
2021-07-17 12:53:59 +0200 <arahael> But anyway, one difference is that Haskell is lazy, so your functions must not have side effects.
2021-07-17 12:54:30 +0200 <arahael> And since that practice is so strictly encouraged (otherwise you risk loosing your sanity), that has a flow-on effect to all of haskell's libraries, too.
2021-07-17 12:55:34 +0200 <DigitalKiwi> haskell is non-strict
2021-07-17 12:55:52 +0200 <DigitalKiwi> https://wiki.haskell.org/Lazy_vs._non-strict
2021-07-17 12:56:01 +0200 <arahael> Yeah - more accurate - thanks for that.
2021-07-17 12:56:34 +0200 <DigitalKiwi> speaking only for myself haskell programmers are lazy ;)
2021-07-17 12:58:05 +0200 <arahael> Hmm. :)
2021-07-17 13:01:36 +0200 <DigitalKiwi> and obsesssed with bottoms
2021-07-17 13:02:01 +0200DigitalKiwidrops mic
2021-07-17 13:03:21 +0200 <Rembane> I like lazy bottoms and I cannot lie.
2021-07-17 13:03:45 +0200anandprabhu(~anandprab@94.202.243.198)
2021-07-17 13:04:04 +0200wei2912(~wei2912@112.199.250.21)
2021-07-17 13:05:00 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds)
2021-07-17 13:05:07 +0200arahaelsuddenly realises why bottom is drawn like _|_
2021-07-17 13:05:20 +0200enemeth79(sid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-17 13:05:45 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-17 13:06:04 +0200 <DigitalKiwi> dibblego twitter avatar lolol
2021-07-17 13:08:21 +0200 <kuribas> arahael: so haskell is the only language that doesn't let you get away coding imperative OO in it?
2021-07-17 13:09:07 +0200 <kuribas> Although imperative style is still quite possible in haskell. OO on the other hand is pretty hard.
2021-07-17 13:09:35 +0200 <dibblego> DigitalKiwi: that's BUMFISH
2021-07-17 13:09:42 +0200Brianmancer(~Neuromanc@user/briandamag) (Ping timeout: 258 seconds)
2021-07-17 13:10:01 +0200 <DigitalKiwi> is that a new operator
2021-07-17 13:10:17 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host)
2021-07-17 13:11:41 +0200 <dibblego> no, it's a pre-landing checklist
2021-07-17 13:13:08 +0200 <arahael> Heh.
2021-07-17 13:13:36 +0200 <arahael> kuribas: If it's subtyping you're referring to, no, I don't think haskell has that.
2021-07-17 13:13:58 +0200 <arahael> kuribas: It does have classes and instances, though, but they behave quite differently.
2021-07-17 13:14:06 +0200 <kuribas> And that's a good thing...
2021-07-17 13:14:25 +0200arahaelthinks so.
2021-07-17 13:14:37 +0200 <DigitalKiwi> https://www.parsonsmatt.org/2017/02/17/object_oriented_programming_in_haskell.html
2021-07-17 13:14:57 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-17 13:16:39 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-17 13:16:43 +0200 <DigitalKiwi> https://hackage.haskell.org/package/hoop
2021-07-17 13:16:56 +0200 <DigitalKiwi> cue bot "haskell can do that!"
2021-07-17 13:22:23 +0200 <dibblego> DigitalKiwi: https://flightscope.gitlab.io/aircraft/checklist/eurofox.pdf page 1, top-right
2021-07-17 13:23:55 +0200Pickchea(~private@user/pickchea)
2021-07-17 13:25:30 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 255 seconds)
2021-07-17 13:26:22 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-07-17 13:26:44 +0200enemeth79(uid309041@id-309041.tooting.irccloud.com)
2021-07-17 13:27:32 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:3e00:8986:ae6e:2aac)
2021-07-17 13:38:49 +0200Ouroborosie(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Remote host closed the connection)
2021-07-17 13:41:00 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-17 13:41:55 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-17 13:43:35 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-07-17 13:43:39 +0200MidAutumnMoon9(~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
2021-07-17 13:43:54 +0200MidAutumnMoon9(~MidAutumn@user/midautumnmoon)
2021-07-17 13:46:19 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-07-17 13:46:53 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-17 13:49:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 13:51:36 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
2021-07-17 13:51:43 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-07-17 13:55:21 +0200jippiedoe(~david@2a02-a44c-e14e-1-d983-46dc-7f08-a171.fixed6.kpn.net)
2021-07-17 13:58:55 +0200 <kuribas> I've been accused of being a haskell lanuage zealot. But actually I am interested in other languages (logic, FP, dependently typed, etc...). It just doesn't seem to be useful to push for other languages that I know less...
2021-07-17 13:59:13 +0200Ouroborosie(~pjetcetal@128-71-13-182.broadband.corbina.ru)
2021-07-17 13:59:21 +0200 <kuribas> I could recommend F# instead of haskell, but I don't know it that well, so there is less benefit IMO...
2021-07-17 14:00:07 +0200favonia(~favonia@user/favonia)
2021-07-17 14:01:40 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-17 14:02:29 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-17 14:03:15 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-07-17 14:03:49 +0200gentauro(~gentauro@user/gentauro)
2021-07-17 14:04:48 +0200 <kuribas> Every time I come with rational arguments, I get a reply like "But I don't like types, they get in the way". Or "programming languages don't matter, business logic does". Or "I don't care it's more robust, we want to move fast and solve bugs as we go".
2021-07-17 14:11:30 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-17 14:11:41 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-17 14:11:50 +0200_xor(~xor@74.215.232.67) (Quit: WeeChat 3.2)
2021-07-17 14:14:02 +0200favonia(~favonia@user/favonia)
2021-07-17 14:15:10 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-17 14:15:54 +0200_xor(~xor@74.215.232.67)
2021-07-17 14:16:02 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-07-17 14:18:06 +0200 <dibblego> get used to it
2021-07-17 14:18:47 +0200 <tom__> kuribas: I feel your pain
2021-07-17 14:18:53 +0200Guest77(~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
2021-07-17 14:19:43 +0200 <tom__> "Types get in the way" then spends three hours NULL chasing
2021-07-17 14:20:50 +0200 <kuribas> tom__: exactly! I spend far more time thinking about types in clojure than in haskell.
2021-07-17 14:21:11 +0200 <maerwald> types can get in the way, especially since haskell lacks structural typing
2021-07-17 14:21:34 +0200 <tom__> haha sometimes you want types to get in the way
2021-07-17 14:21:51 +0200 <maerwald> I know of at least one Haskell dev who now works full-time with typescript and doesn't regret it
2021-07-17 14:22:09 +0200 <maerwald> I probably wouldn't, but it's a valid position
2021-07-17 14:22:50 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-07-17 14:22:55 +0200 <tom__> Clojure to me is just javascript with some immutability
2021-07-17 14:22:58 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 14:23:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-17 14:23:22 +0200 <kuribas> maerwald: I find that often, it just amounts to having a bit more boilerplate. Or having duplicate type definitions.
2021-07-17 14:23:40 +0200 <maerwald> it can be a *lot* of boilerplate
2021-07-17 14:24:00 +0200 <maerwald> and prohibits you of expressing certain relationships between data
2021-07-17 14:24:19 +0200 <tom__> Haskell, Rust and Julia - desert island stack
2021-07-17 14:24:37 +0200 <tom__> Havent tried the latter two :D
2021-07-17 14:24:58 +0200 <maerwald> class based solutions don't work well when you need an *actual* data type for serialisation
2021-07-17 14:25:38 +0200brian_da_mage(~Neuromanc@user/briandamag)
2021-07-17 14:25:45 +0200 <maerwald> typescript is surprisingly simple and powerful on these matters... certainly less elegant and unsound in a few places, but that's the tradeoff the make
2021-07-17 14:25:47 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-07-17 14:26:10 +0200 <kuribas> tom__: rust is only my "to learn list" :)
2021-07-17 14:26:42 +0200 <kuribas> maerwald: you can be less elegant and unsound in haskell too...
2021-07-17 14:27:02 +0200 <maerwald> kuribas: yeah, but that usually involves MORE complexity, not less
2021-07-17 14:27:10 +0200 <maerwald> so the opposite of typescript
2021-07-17 14:27:16 +0200thelounge9230681(~thelounge@cpe-75-85-161-60.san.res.rr.com) (Remote host closed the connection)
2021-07-17 14:27:22 +0200 <tom__> You can be and then people who don't understand what a theoretical model is say that it must mean Haskell is pointless
2021-07-17 14:28:12 +0200 <kuribas> maerwald: I don't agree
2021-07-17 14:28:47 +0200 <maerwald> well, you *can* do some forms of structural typing/subtyping, but it all ends in esoteric libraries
2021-07-17 14:29:00 +0200 <kuribas> maerwald: so don't do it.
2021-07-17 14:29:03 +0200 <maerwald> while you get all that in TS for free without complexity
2021-07-17 14:29:45 +0200 <maerwald> well, I'm not commenting on which language is better, I'm just commenting on "types can get in the way", because they can
2021-07-17 14:29:55 +0200 <kuribas> maerwald: plenty of ways to get around that: 1) partially applied functions (the Endo trick), create a new type with some of the fields. 3) just make the fields all Maybe.
2021-07-17 14:30:56 +0200 <kuribas> maerwald: there is a difference between "the types sometimes get in the way", and "the types always get in the way", the latter is what they seem to be implying.
2021-07-17 14:31:02 +0200 <maerwald> 1) difficult for serialisation, Show instances, debugging, ... 2) boilerplate, 3) unexpressive, because now you have two cases of `Maybe`
2021-07-17 14:31:40 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 14:32:02 +0200 <kuribas> You don't need two cases of Maybe
2021-07-17 14:32:44 +0200 <kuribas> and 4) just put default values.
2021-07-17 14:33:32 +0200 <maerwald> 1. there's no such value, because the computation doesn't return one for the given input, 2. there's no such value, because the computation can *never* return one
2021-07-17 14:33:45 +0200 <maerwald> now you also have to wonder: 3. there's a value, but there shouldn't be one
2021-07-17 14:33:47 +0200 <maerwald> oops
2021-07-17 14:33:47 +0200 <kuribas> IMO, the more you want correctness, the more you are restricted in what you write. It has nothing to do with types (directly).
2021-07-17 14:34:28 +0200 <kuribas> maerwald: if you grab to clojure, you don't care anyway...
2021-07-17 14:34:48 +0200 <maerwald> default values.. what's my default account balance? :p
2021-07-17 14:34:54 +0200 <dibblego> like I said, get used to it
2021-07-17 14:35:03 +0200awth13(~user@user/awth13) (Remote host closed the connection)
2021-07-17 14:35:20 +0200 <tom__> ^ yes and get used to makeNegative = (*) -1
2021-07-17 14:35:49 +0200 <kuribas> Which is my point, haskell can be a nice unsafe language to. Just make a big sum type, and partial functions over it (don't forget to add error messages though...).
2021-07-17 14:36:17 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-07-17 14:36:21 +0200 <maerwald> well, with structural typing you don't need to be partial
2021-07-17 14:36:24 +0200 <int-e> Or unsafeCoerce everything and program untyped lambda calculus? :)
2021-07-17 14:36:36 +0200acidjnk(~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-17 14:36:48 +0200 <arahael> kuribas: Mind you, Clojure seems to offer alternative methods to allow you to type ocrrect code. In particular, Clojure seems to have a fantastic runtime repl.
2021-07-17 14:37:15 +0200 <arahael> kuribas: Such that you're running the live program and debugging it and replacing functions on the fly.
2021-07-17 14:37:26 +0200 <int-e> I like types, they prevent some of the more embarrassing programming errors from being run as code.
2021-07-17 14:37:44 +0200 <tom__> Revenge is forcing them to write a web app in the Lean proof assistant fully verified.
2021-07-17 14:37:49 +0200 <tom__> It has IO.
2021-07-17 14:38:13 +0200krz3si(~quassel@185.217.117.220) (Ping timeout: 265 seconds)
2021-07-17 14:38:25 +0200 <maerwald> right... clojure: forget a closing bracket, code still compiles, but doesn't compute prime numbers... instead it compiles to a chess engine
2021-07-17 14:38:42 +0200 <tom__> haha
2021-07-17 14:38:45 +0200 <maerwald> type safe? Yeah maybe. But.
2021-07-17 14:38:48 +0200 <kuribas> arahael: I think you never actually used clojure?
2021-07-17 14:38:57 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
2021-07-17 14:39:03 +0200 <int-e> tom__: That's deep in "overdoing it" territory. At least if the specification is anything more elaborate than "something in, something out", and even that may be tricky if you interpret it as a promise to fulfil request in finite time.
2021-07-17 14:39:18 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se)
2021-07-17 14:39:26 +0200 <kuribas> arahael: it's a very mediocre runtime IMO, compared to java. Error messages are nearly incomprehensible. Tracing is nice though...
2021-07-17 14:39:39 +0200 <tom__> int-e: Yeah pointless torture :)
2021-07-17 14:39:50 +0200 <maerwald> the only upside of clojure is interactive development
2021-07-17 14:39:55 +0200aman(~aman@user/aman)
2021-07-17 14:40:08 +0200 <tom__> The haskell compiler feels pretty interactive
2021-07-17 14:40:29 +0200 <maerwald> if HLS works, maybe
2021-07-17 14:40:37 +0200 <arahael> kuribas: Seemed to be effective enough.
2021-07-17 14:40:53 +0200 <arahael> But no, I haven't personally used it.
2021-07-17 14:41:00 +0200 <maerwald> but on the other hand: usually not. Compile times are too slow
2021-07-17 14:41:12 +0200 <kuribas> arahael: clojurists just have a different idea of "correct code".
2021-07-17 14:41:15 +0200 <arahael> I personally quite like ghcid.
2021-07-17 14:41:27 +0200 <arahael> kuribas: Indeed, but I think it's the process of discovery that they like.
2021-07-17 14:41:57 +0200 <arahael> kuribas: In haskell, we seem to prefer to test functions in isolation. Clojure people seem to prefer to test functions in the live system.
2021-07-17 14:42:00 +0200 <maerwald> if you're working on 300+ modules and your Type module has a whitespace change, you're gonna need to restart cabal a few times, because your machine OOMed due to TH
2021-07-17 14:42:18 +0200 <tom__> Which library is recommended for sampling probability distributions?
2021-07-17 14:42:42 +0200 <arahael> maerwald: The amount of memory Haskell uses is crazy high. Sadly, I find it way faster than Swift. :/
2021-07-17 14:44:32 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-17 14:45:45 +0200 <kuribas> arahael: lispers will boast about how easy it is to hot patch live systems. They don't tell you that it becomes very hard to see who changed what and when.
2021-07-17 14:46:03 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 14:46:05 +0200 <kuribas> arahael: so you'll end up with CI/CD anyway.
2021-07-17 14:46:32 +0200favonia(~favonia@user/favonia)
2021-07-17 14:46:34 +0200 <kuribas> However a theoretically, a "live" programming environment with integrated version control could be nice.
2021-07-17 14:46:44 +0200 <kuribas> I don't know if that ever has been done.
2021-07-17 14:47:32 +0200 <maerwald> https://hackage.haskell.org/package/optics-th-0.4/docs/Optics-TH.html#v:makeClassy
2021-07-17 14:47:34 +0200 <maerwald> https://hackage.haskell.org/package/optics-th-0.4/docs/Optics-TH.html#v:makeFieldsNoPrefix
2021-07-17 14:47:36 +0200 <maerwald> https://hackage.haskell.org/package/generic-optics-2.2.0.0/docs/Data-Generics-Product-Fields.html#…
2021-07-17 14:47:38 +0200 <maerwald> which one of those to pick?
2021-07-17 14:48:20 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 14:49:00 +0200 <maerwald> HasField is kinda cool with those neat type errors
2021-07-17 14:49:55 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-17 14:51:41 +0200Pickchea(~private@user/pickchea) (Ping timeout: 268 seconds)
2021-07-17 14:52:55 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-07-17 14:53:54 +0200Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds)
2021-07-17 14:55:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-17 14:55:32 +0200fef(~thedawn@user/thedawn)
2021-07-17 14:57:13 +0200pesada(~agua@2804:18:48:588b:1:0:277e:35b0)
2021-07-17 14:57:27 +0200favonia(~favonia@user/favonia)
2021-07-17 14:59:33 +0200jippiedoe(~david@2a02-a44c-e14e-1-d983-46dc-7f08-a171.fixed6.kpn.net) (Ping timeout: 255 seconds)
2021-07-17 14:59:34 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-17 15:01:06 +0200agua(~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 240 seconds)
2021-07-17 15:04:25 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
2021-07-17 15:06:50 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-17 15:08:00 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-17 15:08:26 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-07-17 15:11:29 +0200chomwitt(~Pitsikoko@athedsl-32487.home.otenet.gr)
2021-07-17 15:16:58 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:3e00:8986:ae6e:2aac) (Remote host closed the connection)
2021-07-17 15:21:34 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 258 seconds)
2021-07-17 15:22:43 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-17 15:24:15 +0200justLearning96(~justLearn@bb42-60-215-35.singnet.com.sg)
2021-07-17 15:27:14 +0200justLearning96(~justLearn@bb42-60-215-35.singnet.com.sg) ()
2021-07-17 15:29:20 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2021-07-17 15:31:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-17 15:32:07 +0200agua(~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100)
2021-07-17 15:33:28 +0200favonia(~favonia@user/favonia)
2021-07-17 15:34:12 +0200pesada(~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 255 seconds)
2021-07-17 15:39:28 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2021-07-17 15:40:39 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-07-17 15:41:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 15:43:28 +0200Guest15(~Guest15@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
2021-07-17 15:43:50 +0200xff0x(~xff0x@2001:1a81:5219:9d00:3d14:ef54:1c92:a192) (Ping timeout: 255 seconds)
2021-07-17 15:44:20 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-07-17 15:44:30 +0200xff0x(~xff0x@port-92-193-131-10.dynamic.as20676.net)
2021-07-17 15:45:18 +0200Guest15(~Guest15@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Client Quit)
2021-07-17 15:54:00 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-17 16:02:29 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-17 16:02:49 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 16:04:05 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 16:06:40 +0200favonia(~favonia@user/favonia)
2021-07-17 16:06:43 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-07-17 16:08:18 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-07-17 16:09:10 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-17 16:19:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-17 16:21:25 +0200favonia(~favonia@user/favonia)
2021-07-17 16:35:11 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-17 16:40:32 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 16:40:56 +0200favonia(~favonia@user/favonia)
2021-07-17 16:44:11 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-17 16:44:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-17 16:44:38 +0200Guest77(~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Ping timeout (120 seconds))
2021-07-17 16:45:50 +0200Guest77(~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
2021-07-17 16:51:13 +0200zebrag(~chris@user/zebrag)
2021-07-17 16:55:15 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-17 16:56:14 +0200Guest77(~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Client closed)
2021-07-17 16:56:32 +0200Guest77(~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08)
2021-07-17 16:57:27 +0200fefadmin
2021-07-17 16:57:36 +0200adminadminll
2021-07-17 16:57:48 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 17:02:55 +0200meinside_(uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-17 17:04:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 17:08:14 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
2021-07-17 17:08:50 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-17 17:09:01 +0200texasmynsted(~texasmyns@99.96.221.112)
2021-07-17 17:10:23 +0200gehmehgeh(~user@user/gehmehgeh) (Client Quit)
2021-07-17 17:12:29 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-17 17:12:54 +0200fradet(~fradet@216.252.75.247)
2021-07-17 17:13:31 +0200andreas303(andreas303@ip227.orange.bnc4free.com) (Ping timeout: 268 seconds)
2021-07-17 17:14:01 +0200Zemyla_(~ec2-user@ec2-54-196-11-2.compute-1.amazonaws.com)
2021-07-17 17:14:08 +0200Aleksejs_Home(~Aleksejs@haskell.lv) (Ping timeout: 268 seconds)
2021-07-17 17:14:08 +0200ajb(~ajb@cupid.whatbox.ca) (Ping timeout: 268 seconds)
2021-07-17 17:14:45 +0200Zemyla(~ec2-user@ec2-54-196-11-2.compute-1.amazonaws.com) (Ping timeout: 268 seconds)
2021-07-17 17:14:57 +0200oso(~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f)
2021-07-17 17:15:01 +0200andreas303(andreas303@ip227.orange.bnc4free.com)
2021-07-17 17:15:22 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds)
2021-07-17 17:15:35 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-07-17 17:15:35 +0200 <boxscape> maerwald: the TH versions say "This method of optics generation should only be used when migrating an existing codebase from the lens library to optics"
2021-07-17 17:15:40 +0200ajb(~ajb@cupid.whatbox.ca)
2021-07-17 17:15:51 +0200 <boxscape> maerwald: this, my final answer is C
2021-07-17 17:15:56 +0200 <boxscape> s/this/thus
2021-07-17 17:16:00 +0200nonzen(~nonzen@user/nonzen) (Ping timeout: 268 seconds)
2021-07-17 17:16:00 +0200aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (Ping timeout: 268 seconds)
2021-07-17 17:16:00 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 244 seconds)
2021-07-17 17:16:08 +0200 <maerwald> HasField?
2021-07-17 17:16:20 +0200Aleksejs(~Aleksejs@haskell.lv)
2021-07-17 17:16:21 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds)
2021-07-17 17:16:34 +0200nonzen(~nonzen@user/nonzen)
2021-07-17 17:16:46 +0200 <boxscape> yeah.. though I thought there was a version of that which uses OverloadedLabels
2021-07-17 17:17:20 +0200 <maerwald> HasField though doesn't allow arbitrary subtyping... it's a simple getter
2021-07-17 17:17:23 +0200aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
2021-07-17 17:17:32 +0200adminll(~thedawn@user/thedawn) (Remote host closed the connection)
2021-07-17 17:17:36 +0200hololeap(~hololeap@user/hololeap)
2021-07-17 17:17:54 +0200 <maerwald> with makeClassy style classes you could descend deeper into the structure with the same getter
2021-07-17 17:18:03 +0200Guest9(~Guest9@43.242.116.127)
2021-07-17 17:18:12 +0200superbil(~superbil@1-34-176-171.HINET-IP.hinet.net)
2021-07-17 17:18:12 +0200adminll(~thedawn@user/thedawn)
2021-07-17 17:18:30 +0200 <boxscape> maerwald: oh actually the TH version links to https://hackage.haskell.org/package/optics-core-0.4/docs/Optics-Label.html as preferred solution
2021-07-17 17:19:03 +0200 <boxscape> that's the OverloadedLabels version I was remembering
2021-07-17 17:19:04 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org) (Ping timeout: 268 seconds)
2021-07-17 17:19:12 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org)
2021-07-17 17:19:41 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-17 17:21:31 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
2021-07-17 17:22:44 +0200 <maerwald> so there you could also define custom LabelOptic instances that descend into a structure?
2021-07-17 17:23:27 +0200 <boxscape> that seems plausible but I haven't tried doing it
2021-07-17 17:23:47 +0200 <maerwald> I'm leaning towards makeClassy, but I'm not sure
2021-07-17 17:24:25 +0200 <boxscape> I like makeClassy, the main reason I would avoid it personally is that the documentation advises against it
2021-07-17 17:25:40 +0200 <maerwald> so what does LabelOptic give over HasField?
2021-07-17 17:25:43 +0200Ariakenom_(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-17 17:26:17 +0200 <texasmynsted> What is the modern answer to haskell records? Lens?
2021-07-17 17:26:49 +0200 <maerwald> only difference I see is labelOptic is `Optic` and HasField is a `Lens`
2021-07-17 17:28:24 +0200 <boxscape> hm I'm not sure what the concrete differences are
2021-07-17 17:29:14 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-20.prtc.net)
2021-07-17 17:29:33 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 268 seconds)
2021-07-17 17:29:35 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-17 17:30:52 +0200 <boxscape> texasmynsted: there are a few answers to this: In the next version, OverloadedRecordDot is being introduces, which allows one to write something like `personA.company.name`. (Updates are a bit iffy but will improve over time.) In the meantime, lens is definitely still widely used, though optics is a replacement which aims to have better error messages. There is also some research going into row types, but that's further out.
2021-07-17 17:30:55 +0200 <boxscape> s/next version/next version of GHC
2021-07-17 17:31:36 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-17 17:32:08 +0200 <boxscape> (though regarding row types, the vinyl records package allows something similar today)
2021-07-17 17:33:11 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-17 17:35:02 +0200Ariakenom__(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-17 17:35:20 +0200enemeth79(uid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-17 17:35:21 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-17 17:35:30 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-20.prtc.net) (Quit: Client closed)
2021-07-17 17:36:09 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-17 17:38:40 +0200oso(~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) (Ping timeout: 246 seconds)
2021-07-17 17:38:48 +0200Ariakenom_(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 268 seconds)
2021-07-17 17:39:45 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 17:40:03 +0200favonia(~favonia@user/favonia)
2021-07-17 17:43:24 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-07-17 17:43:44 +0200kuribas(~user@ptr-25vy0i9ash1yu2tubi9.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-07-17 17:44:31 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-17 17:45:43 +0200keutoi(~keutoi@157.48.202.216) (Quit: Reconnecting)
2021-07-17 17:45:53 +0200keutoi(~keutoi@157.48.202.216)
2021-07-17 17:46:54 +0200chris_(~chris@81.96.113.213)
2021-07-17 17:47:16 +0200Guest77(~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Client closed)
2021-07-17 17:53:52 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-17 17:55:47 +0200hendursa1(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-17 17:56:16 +0200hendursa1(~weechat@user/hendursaga)
2021-07-17 17:56:22 +0200arjun(~user@user/arjun)
2021-07-17 17:59:48 +0200Guest14(~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
2021-07-17 18:03:05 +0200 <Guest14> Hello :)
2021-07-17 18:03:40 +0200 <Guest14> I am new to Haskell and am working through the Real World Haskell Book
2021-07-17 18:03:57 +0200econo(uid147250@user/econo)
2021-07-17 18:04:27 +0200 <Guest14> I have a basic question if anyone would care to listen
2021-07-17 18:06:02 +0200 <allbery_b> best to just ask it rather than asking to ask
2021-07-17 18:06:11 +0200allbery_bgeekosaur
2021-07-17 18:06:23 +0200 <davean> asking to ask is why I wasn't helping
2021-07-17 18:07:44 +0200 <Guest14> splitWith _ [] = []
2021-07-17 18:07:45 +0200 <Guest14> splitWith a xs = [pre ++ [x]] ++ next
2021-07-17 18:07:45 +0200 <Guest14> where
2021-07-17 18:07:46 +0200 <Guest14> (pre, x:suf) = span a xs
2021-07-17 18:07:46 +0200 <Guest14> next = splitWith a suf
2021-07-17 18:08:10 +0200 <Guest14> I have this program and I run into a problem with x:suf when span a xs is [] becuase there is no head
2021-07-17 18:09:30 +0200chomwitt(~Pitsikoko@athedsl-32487.home.otenet.gr) (Ping timeout: 240 seconds)
2021-07-17 18:09:34 +0200 <int-e> > let f = splitAt 1 in (f "abc", f "")
2021-07-17 18:09:36 +0200 <lambdabot> (("a","bc"),("",""))
2021-07-17 18:11:31 +0200 <int-e> (So maybe use splitAt instead of the x:suf pattern.)
2021-07-17 18:11:39 +0200 <maerwald> was there a question yet?
2021-07-17 18:11:45 +0200 <davean> No
2021-07-17 18:12:09 +0200 <Guest14> Ok I will give that a try thanks
2021-07-17 18:12:10 +0200 <int-e> They described a problem, close enough.
2021-07-17 18:12:35 +0200 <maerwald> They also described the answer
2021-07-17 18:12:38 +0200 <maerwald> "there is no head"
2021-07-17 18:12:47 +0200 <int-e> @where paste
2021-07-17 18:12:47 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-07-17 18:13:04 +0200 <int-e> maerwald: That's the reason, but not a solution for the problem?
2021-07-17 18:13:06 +0200int-eshrugs
2021-07-17 18:13:10 +0200 <maerwald> So my answer is: yes
2021-07-17 18:13:28 +0200 <int-e> Well, so sorry for trying to be helpful.
2021-07-17 18:13:33 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-07-17 18:14:08 +0200Ariakenom__(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds)
2021-07-17 18:14:09 +0200 <davean> int-e: oh do be helpful
2021-07-17 18:15:04 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Leaving)
2021-07-17 18:15:14 +0200 <Guest14> int-e that worked thank you
2021-07-17 18:16:19 +0200darius-os_(uid508861@id-508861.stonehaven.irccloud.com)
2021-07-17 18:20:42 +0200 <texasmynsted> thank you boxscape
2021-07-17 18:21:29 +0200 <texasmynsted> Sounds like optics or vinyl for now
2021-07-17 18:21:44 +0200Guest14(~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
2021-07-17 18:22:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-17 18:23:04 +0200Ariakenom__(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-17 18:24:27 +0200Guest14(~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
2021-07-17 18:27:27 +0200brian_da_mage(~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
2021-07-17 18:27:58 +0200oso(~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f)
2021-07-17 18:30:57 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 18:31:11 +0200 <sm> g'day all. Speaking of optics.. you experienced [lens] coders, do you find it good or bad for (a) fields and (b) lenses to be visually disctinct from other kinds of bindings (functions, "variables") ? As in eg _field/lens_, field_/lens__, _field/lensL, .... ?
2021-07-17 18:31:57 +0200Ariakenom__(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds)
2021-07-17 18:32:24 +0200 <sm> I feel it would be good overall, for avoiding collisions and for human comprehension . But I don't have a lot of lens experience
2021-07-17 18:33:02 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-17 18:33:18 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 255 seconds)
2021-07-17 18:33:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-17 18:34:12 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-17 18:36:33 +0200Ariakenom__(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-17 18:36:59 +0200retroid_(~retro@97e2ba5d.skybroadband.com)
2021-07-17 18:38:11 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
2021-07-17 18:40:10 +0200 <maerwald> can you derive LabelOptic with deriving via for an inner type?
2021-07-17 18:41:05 +0200retro_(~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds)
2021-07-17 18:41:42 +0200retroid_(~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds)
2021-07-17 18:42:24 +0200retroid_(~retro@97e2ba5d.skybroadband.com)
2021-07-17 18:42:50 +0200 <oso> xpost from #haskell-beginners:
2021-07-17 18:42:52 +0200 <oso> I'm passing around a type synonym for Int, but in reality the only constraint it needs to follow is that it's hashable. what constructor do i use for this? my brain says go from `type UID = Int` to `data UID a = Hashable a` but that's very not correct, and google isn't helping much
2021-07-17 18:43:21 +0200 <oso> nvm sorry got an answer there
2021-07-17 18:48:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 18:49:57 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 18:50:11 +0200Guest14(~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
2021-07-17 18:51:02 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 18:51:26 +0200favonia(~favonia@user/favonia)
2021-07-17 18:52:47 +0200cheater(~Username@user/cheater) (Remote host closed the connection)
2021-07-17 18:53:50 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-17 18:54:37 +0200 <glguy> oso, if you just need to know that something is hashable you'd use it like: stuff :: Hashable a => a -> b -> c
2021-07-17 18:54:39 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-07-17 18:54:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-17 18:55:19 +0200 <glguy> If a parameter is the uid parameter you can document that like: stuff :: Hashable uid => uid {- ^ the UID -} -> etc
2021-07-17 18:55:35 +0200 <oso> I was trying to do that while also using types to keep my signatures from becoming unwieldy, but first i'll just worry about getting the code working
2021-07-17 18:55:43 +0200keutoi(~keutoi@157.48.202.216) (Quit: leaving)
2021-07-17 18:55:53 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-07-17 18:55:58 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 18:56:05 +0200cheater(~Username@user/cheater)
2021-07-17 18:56:22 +0200 <glguy> the documentation for parameters goes in the haddock comments rather than type synonyms
2021-07-17 18:56:43 +0200 <oso> mmk
2021-07-17 18:57:00 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-17 18:57:52 +0200burnside_(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 18:57:55 +0200smichel17(~smichel17@2601:193:8300:4b9::600)
2021-07-17 18:58:06 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-07-17 19:00:31 +0200arjun(~user@user/arjun) (Ping timeout: 250 seconds)
2021-07-17 19:01:33 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: Connection reset by peer)
2021-07-17 19:02:18 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-17 19:05:40 +0200 <dsal> oso: It's tempting to put constraints in the type definitions, but if you take a look at, for example, `Data.Map.Strict` you'll see the type definition is just `data Map k a`. You'd think k would always have to be ordered, but that's not the case. You can create and work on maps that have unorderable keys when you don't do things that require ordering. e.g.:
2021-07-17 19:05:42 +0200 <dsal> > M.elems $ (* 2) <$> M.singleton id 3
2021-07-17 19:05:43 +0200 <lambdabot> [6]
2021-07-17 19:07:10 +0200 <dsal> The idea is that you only have to constrain things where they actually need to be constrained. The Functor instance, e.g., doesn't care about the keys at all, so why should it require they're ordered?
2021-07-17 19:08:00 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-17 19:09:25 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-17 19:11:52 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-17 19:12:32 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-07-17 19:13:45 +0200 <oso> got it working \o/
2021-07-17 19:13:47 +0200 <oso> thank you
2021-07-17 19:15:07 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-07-17 19:16:22 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-17 19:21:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 19:22:00 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-07-17 19:26:35 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
2021-07-17 19:27:45 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-17 19:28:36 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-17 19:41:25 +0200Pickchea(~private@user/pickchea)
2021-07-17 19:42:19 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-07-17 19:43:14 +0200mcfrdy(~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds)
2021-07-17 19:44:09 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 258 seconds)
2021-07-17 19:44:25 +0200mcfrdy(~mcfrdy@45.67.96.126)
2021-07-17 19:44:26 +0200mcfrdy(~mcfrdy@45.67.96.126) (Changing host)
2021-07-17 19:44:26 +0200mcfrdy(~mcfrdy@user/mcfrdy)
2021-07-17 19:46:09 +0200 <hololeap> so, I figured out a way to make a function with an arbitrary number of arguments using type families and type-level lists. but, I have to wonder ... has someone already made this and put it on hackage?
2021-07-17 19:47:04 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 19:47:46 +0200 <texasmynsted> wait, why do you want a function with an arbitrary number of arguments?
2021-07-17 19:48:31 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-07-17 19:49:03 +0200 <c_wraith> usually to cover for a lack of other expressiveness
2021-07-17 19:49:09 +0200 <c_wraith> printf is a common example
2021-07-17 19:49:12 +0200 <texasmynsted> Seems to me ideally a function should have exactly one argument
2021-07-17 19:49:19 +0200 <c_wraith> We can't write the type it actually has in Haskell
2021-07-17 19:49:25 +0200 <c_wraith> Because it's a dependent type
2021-07-17 19:49:51 +0200 <c_wraith> So varargs lets us do it anyway and fail at runtime if the programmer got it wrong
2021-07-17 19:50:07 +0200 <texasmynsted> printf solves a problem in a particular way that I think could be solved better, differently
2021-07-17 19:50:18 +0200 <c_wraith> differently? sure. Better? Not really.
2021-07-17 19:50:21 +0200 <hololeap> the motivation was because I had a typeclass with a function, and I encountered some outliers that needed extra arguments passed to that function
2021-07-17 19:50:47 +0200 <texasmynsted> c_wraith: I am not convinced
2021-07-17 19:50:48 +0200 <hololeap> I'd have to write up a blog post or something to get into all the details
2021-07-17 19:50:57 +0200 <Rembane> hololeap: Do it! :D
2021-07-17 19:51:08 +0200 <texasmynsted> yes, that would be a good read
2021-07-17 19:51:15 +0200 <c_wraith> printf is *really* good at doing exactly what it's intended for. Compactly specifying output formatted for monospace devices.
2021-07-17 19:51:33 +0200 <texasmynsted> like regular expressions?
2021-07-17 19:51:42 +0200 <c_wraith> honestly, it's more useful
2021-07-17 19:52:01 +0200 <c_wraith> regular expressions have to involve things like capturing group to really be useful, and those complicate APIs tremendously
2021-07-17 19:52:05 +0200 <c_wraith> printf has no such problems
2021-07-17 19:52:20 +0200 <texasmynsted> Right. I think regular expressions work great but are terrible and the problem is better solved differently
2021-07-17 19:52:46 +0200 <EvanR> compare and contrast serious uses of printf with the expanded version, replicate that across a code base like 50 times and compare xD
2021-07-17 19:53:12 +0200 <EvanR> also, printf for debugging
2021-07-17 19:53:25 +0200 <EvanR> debugging would be harsher without it
2021-07-17 19:53:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-17 19:54:27 +0200 <EvanR> I'm more interested with this case of some function sometimes needing more arguments
2021-07-17 19:56:04 +0200 <texasmynsted> I am still going with functions should have exactly one argument
2021-07-17 19:56:30 +0200 <hololeap> I mean... they do, technically.
2021-07-17 19:57:24 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
2021-07-17 19:57:38 +0200 <texasmynsted> yes
2021-07-17 19:58:02 +0200 <EvanR> if the difference is between argument type (A,B) and (A,B,C) it's about argument type and not number
2021-07-17 19:58:23 +0200 <texasmynsted> Okay now we are getting somewhere
2021-07-17 20:00:32 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-17 20:00:36 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Ping timeout: 265 seconds)
2021-07-17 20:00:57 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-07-17 20:01:47 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
2021-07-17 20:03:07 +0200azeem(~azeem@176.201.25.252)
2021-07-17 20:05:26 +0200flukiluke_(~flukiluke@168.138.23.5) (Ping timeout: 265 seconds)
2021-07-17 20:05:49 +0200flukiluke(~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2021-07-17 20:06:15 +0200elcaro(~anonymous@45.32.191.75) (Ping timeout: 252 seconds)
2021-07-17 20:07:09 +0200elcaro(~anonymous@45.32.191.75)
2021-07-17 20:09:18 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 265 seconds)
2021-07-17 20:09:54 +0200pesada(~agua@2804:18:48:588b:1:0:277e:35b0)
2021-07-17 20:10:09 +0200Core5124(~agua@2804:14c:8793:8e2f:642c:be4c:c775:de87)
2021-07-17 20:13:10 +0200__monty__(~toonn@user/toonn)
2021-07-17 20:13:23 +0200agua(~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 255 seconds)
2021-07-17 20:14:11 +0200pesada(~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 250 seconds)
2021-07-17 20:15:26 +0200azeem(~azeem@176.201.25.252) (Ping timeout: 268 seconds)
2021-07-17 20:17:33 +0200azeem(~azeem@176.201.25.252)
2021-07-17 20:19:56 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
2021-07-17 20:19:57 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-17 20:21:23 +0200Ouroborosie(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
2021-07-17 20:24:10 +0200Ananta-shesha(~pjetcetal@128-71-13-182.broadband.corbina.ru)
2021-07-17 20:24:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 20:24:49 +0200azeem(~azeem@176.201.25.252) (Read error: Connection reset by peer)
2021-07-17 20:26:00 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
2021-07-17 20:26:27 +0200brian_da_mage(~Neuromanc@user/briandamag)
2021-07-17 20:30:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-17 20:30:56 +0200Ananta-sheshaAnantashesha
2021-07-17 20:31:05 +0200AnantasheshaAnanta-shesha
2021-07-17 20:36:54 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-17 20:37:06 +0200lavaman(~lavaman@98.38.249.169)
2021-07-17 20:37:39 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-07-17 20:42:10 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-17 20:42:16 +0200DNH(~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-17 20:45:49 +0200Ananta-shesha(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
2021-07-17 20:46:05 +0200DNH(~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89)
2021-07-17 20:46:05 +0200burnside_(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-07-17 20:46:10 +0200Ananta-shesha(~pjetcetal@128-71-13-182.broadband.corbina.ru)
2021-07-17 20:46:23 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 20:49:30 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 240 seconds)
2021-07-17 20:50:08 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-07-17 20:50:11 +0200DNH(~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Client Quit)
2021-07-17 20:51:17 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-07-17 20:53:36 +0200hendursaga(~weechat@user/hendursaga)
2021-07-17 20:54:09 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-17 20:56:50 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-07-17 20:58:27 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-07-17 20:59:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 21:00:54 +0200benin0369(~benin@183.82.206.198) (Ping timeout: 255 seconds)
2021-07-17 21:03:41 +0200aallen(~aallen@072-182-074-253.res.spectrum.com)
2021-07-17 21:05:55 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-17 21:06:50 +0200 <texasmynsted> sigh.
2021-07-17 21:07:01 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-17 21:07:39 +0200 <oso> seconded
2021-07-17 21:08:52 +0200 <texasmynsted> +1 oso
2021-07-17 21:09:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-07-17 21:12:41 +0200brian_da_mageBrianmancer
2021-07-17 21:14:22 +0200hendursaga(~weechat@user/hendursaga)
2021-07-17 21:14:36 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2021-07-17 21:17:38 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
2021-07-17 21:17:38 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-17 21:18:12 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 21:20:01 +0200adminll(~thedawn@user/thedawn) (Remote host closed the connection)
2021-07-17 21:20:24 +0200machinedgod(~machinedg@24.105.81.50) (Remote host closed the connection)
2021-07-17 21:21:19 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-17 21:22:40 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-07-17 21:25:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 21:30:09 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 21:30:34 +0200favonia(~favonia@user/favonia)
2021-07-17 21:31:03 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
2021-07-17 21:32:57 +0200 <monochrom> Why so grim?
2021-07-17 21:33:18 +0200 <boxscape> hololeap: one of rae's latest videos is also about varargs https://youtu.be/iGSKqcebhfs
2021-07-17 21:33:22 +0200 <monochrom> You know "grim" and "grin" are just one curvy stroke apart. :)
2021-07-17 21:33:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-17 21:33:55 +0200 <boxscape> you can't spell slaughter without laughter, you can't spell grim without grin
2021-07-17 21:34:33 +0200 <monochrom> hee hee
2021-07-17 21:35:42 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-17 21:35:57 +0200 <oso> idk why texas is feeling grim but i'm extremely anxious about a work trip and trying to stuff the feelings down by adding documentation to my heretofore undocumented code
2021-07-17 21:36:32 +0200 <monochrom> My gripe about printf is I will be writing "%d %d %d %d %d %d %d" and then it's the same issue with (Int,Int,Int,Int,Int,Int). And I'm deliberately demonstrating an miscounting error for starters. But this issue is not about vararg, it's about losing structure.
2021-07-17 21:37:45 +0200alx741(~alx741@181.196.68.89) (Ping timeout: 265 seconds)
2021-07-17 21:38:53 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 21:39:32 +0200finsternis(~X@23.226.237.192) (Remote host closed the connection)
2021-07-17 21:40:57 +0200mcfrdy(~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds)
2021-07-17 21:41:40 +0200Ananta-shesha(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
2021-07-17 21:43:37 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-07-17 21:43:45 +0200dmwit(~dmwit@pool-96-255-233-247.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-07-17 21:44:57 +0200mcfrdy(~mcfrdy@45.67.96.77)
2021-07-17 21:44:57 +0200mcfrdy(~mcfrdy@45.67.96.77) (Changing host)
2021-07-17 21:44:57 +0200mcfrdy(~mcfrdy@user/mcfrdy)
2021-07-17 21:46:21 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 21:47:45 +0200favonia(~favonia@user/favonia)
2021-07-17 21:48:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 21:50:23 +0200alx741(~alx741@186.178.109.120)
2021-07-17 21:51:08 +0200 <maerwald> can you implement varargs in haskell without ambiguitiy due to partial application?
2021-07-17 21:51:18 +0200 <maerwald> (and I'm not talking about the typeclass trick)
2021-07-17 21:51:27 +0200dmwit(~dmwit@pool-108-18-198-142.washdc.fios.verizon.net)
2021-07-17 21:51:55 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 21:52:19 +0200 <geekosaur> I think there's a typesafe varargs via TH somewhere on hackage
2021-07-17 21:52:48 +0200 <geekosaur> probably relies on the format string being literal, but you have other problems if it's not anyway
2021-07-17 21:53:46 +0200 <c_wraith> In the general case, there's true ambiguity. There's no general way to distinguish between providing all the arguments that will be provided and partially applying the function.
2021-07-17 21:54:25 +0200 <geekosaur> ^
2021-07-17 21:55:06 +0200finsternis(~X@23.226.237.192)
2021-07-17 21:55:20 +0200 <c_wraith> this is why I described varargs as a workaround, not something worth having for itself :)
2021-07-17 21:56:14 +0200Franciman(~francesco@openglass.it)
2021-07-17 21:56:21 +0200 <Franciman> Hi, does cabal support literate haskell?
2021-07-17 21:56:26 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
2021-07-17 21:56:38 +0200 <c_wraith> if you put an .lhs extension on the files, it should find and compile them
2021-07-17 21:56:56 +0200 <Franciman> I have a project using .lhs files, but I get errors
2021-07-17 21:56:58 +0200 <Franciman> wait
2021-07-17 21:57:19 +0200 <Franciman> `unlit' failed in phase `Literate pre-processor'. (Exit code: 1)
2021-07-17 21:57:31 +0200 <c_wraith> so it's trying!
2021-07-17 21:57:36 +0200 <Franciman> it is a module I specified in the other-modules
2021-07-17 21:57:45 +0200 <Franciman> so I wrote ListCursor
2021-07-17 21:57:49 +0200 <Franciman> instead of ListCursor.lhs
2021-07-17 21:58:08 +0200 <Franciman> I am really temped to ignore cabal and automatically go with ghc
2021-07-17 21:58:11 +0200 <Franciman> let me see what I can do
2021-07-17 21:58:29 +0200DNH(~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89)
2021-07-17 21:58:35 +0200 <geekosaur> so it ran unlit, so it correctly found it was literate haskell. yoou could try running unlit manually and see what it choked on
2021-07-17 21:58:40 +0200 <c_wraith> that error doesn't look like you left out an extension
2021-07-17 21:58:50 +0200 <c_wraith> that error looks like it was incorrect literate haskell
2021-07-17 21:59:28 +0200 <Franciman> uhm
2021-07-17 22:00:10 +0200 <Franciman> geekosaur: how do I call unlit?
2021-07-17 22:00:16 +0200 <Franciman> I don't have an unlit program
2021-07-17 22:00:32 +0200 <geekosaur> it's in the library directory
2021-07-17 22:01:09 +0200 <Franciman> c_wraith: here is my code: https://bpa.st/A7JA
2021-07-17 22:01:11 +0200 <geekosaur> ghc --print-libdir
2021-07-17 22:01:29 +0200 <geekosaur> then unlit < yoursourcefile
2021-07-17 22:01:48 +0200 <geekosaur> with the fukll path to the unlit binary in the libdir
2021-07-17 22:02:36 +0200 <Franciman> geekosaur: sorry to bother again
2021-07-17 22:02:38 +0200 <Franciman> but I get
2021-07-17 22:02:43 +0200 <Franciman> usage: unlit [-q] [-n] [-c] [-#] [-P] [-h label] file1 file2
2021-07-17 22:02:47 +0200 <Franciman> and there is no help :D
2021-07-17 22:02:59 +0200 <Franciman> oh I am stupid
2021-07-17 22:03:01 +0200 <Franciman> sorry
2021-07-17 22:03:03 +0200 <c_wraith> I don't know if you can mix bird tracks and tex-style literate haskell in one file
2021-07-17 22:03:10 +0200 <Franciman> no ok, same problem
2021-07-17 22:03:31 +0200 <Franciman> c_wraith: uhm let me see
2021-07-17 22:04:24 +0200 <geekosaur> I don't think you can
2021-07-17 22:04:31 +0200 <Franciman> and in fact!
2021-07-17 22:04:35 +0200 <Franciman> thank you all
2021-07-17 22:04:48 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 255 seconds)
2021-07-17 22:05:10 +0200 <Franciman> only sad thing is that I can't use the # for markdown titles
2021-07-17 22:05:25 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-17 22:05:27 +0200 <geekosaur> unlit could use more documentation but I think it's largely fallen out of use
2021-07-17 22:05:36 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 258 seconds)
2021-07-17 22:05:38 +0200 <Franciman> nobody likes literate haskell?
2021-07-17 22:05:53 +0200 <oso> you could use the === underline in place of the # for header
2021-07-17 22:05:56 +0200 <Franciman> I mean, I understand, it does not even sync with haddock
2021-07-17 22:06:01 +0200 <c_wraith> in very broad terms, nobody likes literate programming
2021-07-17 22:06:08 +0200 <Franciman> yup, thanks oso
2021-07-17 22:06:43 +0200juhp(~juhp@128.106.188.66)
2021-07-17 22:06:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-17 22:07:52 +0200phma(phma@2001:5b0:211b:8138:4237:c684:b0bd:87ec) (Read error: Connection reset by peer)
2021-07-17 22:08:19 +0200 <maerwald> Franciman: no, it's not even bidirectional
2021-07-17 22:08:37 +0200 <maerwald> there's a project that fixes that
2021-07-17 22:08:43 +0200 <maerwald> but even then, not sure
2021-07-17 22:09:09 +0200 <maerwald> https://blog.esciencecenter.nl/entangled-1744448f4b9f
2021-07-17 22:09:25 +0200 <maerwald> https://github.com/entangled/entangled
2021-07-17 22:09:30 +0200 <Franciman> entangled is cool, I use it at my job
2021-07-17 22:09:36 +0200 <Franciman> it has some sore points
2021-07-17 22:09:39 +0200 <Franciman> and a lit of bugs
2021-07-17 22:09:50 +0200 <Franciman> lot* lol
2021-07-17 22:09:52 +0200 <maerwald> that's why it's LITerate
2021-07-17 22:09:54 +0200 <maerwald> lol
2021-07-17 22:09:57 +0200 <Franciman> LOL
2021-07-17 22:10:07 +0200 <Franciman> but it does not integrate well with ghc etc
2021-07-17 22:10:09 +0200phma(phma@2001:5b0:211f:63f8:7d7f:3315:17e4:ee3e)
2021-07-17 22:11:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-17 22:13:34 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 22:16:13 +0200 <dsal> Franciman: the last time I wrote literate Haskell, it was in markdown. It's not bad.
2021-07-17 22:18:02 +0200 <Franciman> it is cool yeah
2021-07-17 22:18:02 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
2021-07-17 22:18:25 +0200 <Franciman> only thing is, as it seems, it does not mix well with haddock
2021-07-17 22:18:32 +0200 <Franciman> you still have to add haddock special comments
2021-07-17 22:20:33 +0200Guest9(~Guest9@43.242.116.127) (Quit: Connection closed)
2021-07-17 22:21:13 +0200 <dsal> Yeah, haddock is lacking in a few ways. I also want TH to work with it.
2021-07-17 22:22:54 +0200 <dmj`> an alternative haddock could be nice, could call it koi pond
2021-07-17 22:24:15 +0200 <geekosaur> there was at some point a discussion on cafe about incompatibilities between haddock markup and markdown that would make supporting both difficult
2021-07-17 22:29:00 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-17 22:29:09 +0200azeem(~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it)
2021-07-17 22:32:46 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-17 22:34:34 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-17 22:35:56 +0200 <monochrom> It is sad that we now have to add "bi-directional" to refer to actual literate programming.
2021-07-17 22:36:31 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-07-17 22:36:33 +0200 <monochrom> Candidly, lhs is merely a nicer syntax for vanilla comments.
2021-07-17 22:38:15 +0200 <monochrom> Literate programming needed to be invented as a thing distinct from mere comments because the biggest part is to present your code in an order the computer doesn't expect. If a system can't do this, it is not literate programming.
2021-07-17 22:39:48 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-17 22:40:48 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 22:40:59 +0200vicfred(~vicfred@user/vicfred)
2021-07-17 22:41:12 +0200favonia(~favonia@user/favonia)
2021-07-17 22:44:40 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-07-17 22:45:40 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-17 22:49:13 +0200niemand(~niemand@p5796acb3.dip0.t-ipconnect.de)
2021-07-17 22:50:39 +0200niemand(~niemand@p5796acb3.dip0.t-ipconnect.de) (Client Quit)
2021-07-17 22:51:00 +0200acidjnk(~acidjnk@p200300d0c72b9505d437a5269bf657ec.dip0.t-ipconnect.de)
2021-07-17 22:51:41 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
2021-07-17 22:52:14 +0200 <dmj`> It would be really nice if Haskell abided by industry standards instead of custom stuff, like use toml, markdown, LLVM instead of cabal files, haddock syntax, Cmm
2021-07-17 22:53:39 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
2021-07-17 22:53:57 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-17 22:54:04 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-17 22:55:29 +0200 <geekosaur> llvm's not gonna happen unless you want to try to upstream a bunch of stuff so ghc can inform llvm of cps-ed stuff
2021-07-17 22:56:01 +0200 <geekosaur> and then arrange for ghc to be able to do so, but nobody's going to do that until there's somewhere for it to go
2021-07-17 22:57:04 +0200 <Rembane> Sounds like a moment 22
2021-07-17 22:57:45 +0200 <geekosaur> no, they know what needs to change and how, but it would require a bunch of llvm changes that are more or less ghc-specific
2021-07-17 22:57:54 +0200 <geekosaur> so they're unlikely to ever happen
2021-07-17 22:58:33 +0200 <Rembane> Got it! Then I misread, thank you for the clarification.
2021-07-17 22:58:48 +0200 <noctux> dmj`: industry standards? do you mean XML, more XML and visual-C? :P
2021-07-17 22:59:16 +0200 <dmj`> noctux: yes, XML over SOAP.
2021-07-17 22:59:30 +0200 <maerwald> dmj`: afair someone was actually working on providing a toml interface to cabal?
2021-07-17 22:59:39 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
2021-07-17 22:59:41 +0200 <maerwald> or maybe I just imagined that
2021-07-17 23:00:33 +0200 <dmj`> geekosaur: what are your thoughts on GRIN as a backend for GHC
2021-07-17 23:00:36 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2021-07-17 23:01:29 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk)
2021-07-17 23:02:35 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2021-07-17 23:04:12 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 23:04:36 +0200favonia(~favonia@user/favonia)
2021-07-17 23:05:18 +0200 <geekosaur> looks to me like it really wants to be a whole-program compiler? which ghc kinda doesn't
2021-07-17 23:05:33 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-07-17 23:05:42 +0200 <geekosaur> (and yet kinda does since it "fakes it" via exporting cidode in .hi files)
2021-07-17 23:05:55 +0200 <geekosaur> *code
2021-07-17 23:07:27 +0200 <geekosaur> still, makes me wonder how well grin would work if used thye way ghc would use it instead of whole-program
2021-07-17 23:07:40 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-07-17 23:09:43 +0200 <geekosaur> would really need to write out IR files instead of object files and let the backend take it from there, but I'm not sure how well ghc would work with that setup given it doesn't e.g. do that with llvm IR
2021-07-17 23:11:06 +0200 <geekosaur> and you couldn't mix grin backend objects with non-grin backend, like you currently can with llvm vs. asm
2021-07-17 23:11:25 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
2021-07-17 23:13:22 +0200 <geekosaur> I think ghc would have to treat grin not as a backend but as a "way" (e.g. static vs. dynamic, or profiled vs. non-profiled)
2021-07-17 23:13:37 +0200 <monochrom> cabal was invented long before "industry standard" existed.
2021-07-17 23:14:02 +0200 <monochrom> Apart from XML.
2021-07-17 23:14:22 +0200 <Rembane> I wonder why industry didn't go with cabal's format.
2021-07-17 23:15:23 +0200 <monochrom> And JVM bytecode.
2021-07-17 23:15:50 +0200 <geekosaur> because it's only friendly to haskell, since haskell is friendly to parsers?
2021-07-17 23:16:18 +0200 <dmj`> ghc-grin forks ghc it seems, exports *all* of the STG somewhere, does the analysis, brings it back and continues on in the pipeline, to great effect. Suppose we went the nuclear option and replaced STG with GRIN. GRIN would inline the eval function (which is currently hardcoded in the RTS), then perform the WPO, then emit LLVM.
2021-07-17 23:16:19 +0200 <geekosaur> and the syntax is at least reminiscent of haskell
2021-07-17 23:16:34 +0200 <dmj`> We could even compile the RTS to GRIN and include it in the optimization phases, which would have the effect of dead code eliminating parts of the RTS that were unused, like GC for example.
2021-07-17 23:16:50 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-07-17 23:16:52 +0200 <geekosaur> interesting
2021-07-17 23:17:15 +0200hendursaga(~weechat@user/hendursaga)
2021-07-17 23:19:03 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 23:19:03 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
2021-07-17 23:19:33 +0200favonia(~favonia@user/favonia)
2021-07-17 23:20:33 +0200 <dmj`> benefits from WPO are so large even naive pointer analysis (steensgaard) is an enormous win, would still need a fast interpreter though
2021-07-17 23:21:12 +0200 <dmj`> thomas johnson created STG, then his final work was GRIN, but it never saw prominence in GHC, I wonder why that is
2021-07-17 23:23:53 +0200 <geekosaur> probably because ghc's architecture makes intervening at the stg layer more difficult than it should be
2021-07-17 23:24:36 +0200chomwitt(~Pitsikoko@athedsl-32487.home.otenet.gr)
2021-07-17 23:27:20 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 23:30:54 +0200 <dmj`> exactly, too much code at that point
2021-07-17 23:31:20 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
2021-07-17 23:33:00 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-17 23:33:38 +0200favonia(~favonia@user/favonia)
2021-07-17 23:34:54 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-17 23:35:03 +0200 <dmj`> realizing that GRIN's eval inlining is the first step in undoing the overhead of lazy evaluation (while preserving semantics) was pretty mind-blowing
2021-07-17 23:36:32 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-17 23:37:03 +0200mcfrdy(~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds)
2021-07-17 23:37:24 +0200mcfrdy(~mcfrdy@45.67.96.175)
2021-07-17 23:37:24 +0200mcfrdy(~mcfrdy@45.67.96.175) (Changing host)
2021-07-17 23:37:24 +0200mcfrdy(~mcfrdy@user/mcfrdy)
2021-07-17 23:38:52 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-17 23:39:26 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Quit: -)
2021-07-17 23:39:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-07-17 23:40:32 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving)
2021-07-17 23:40:34 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
2021-07-17 23:41:19 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-17 23:42:11 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-17 23:43:11 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-17 23:44:22 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-17 23:46:07 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-07-17 23:46:42 +0200favonia(~favonia@user/favonia)
2021-07-17 23:48:43 +0200silverwhitefish(~hidden@47.202.102.10) (Ping timeout: 258 seconds)
2021-07-17 23:52:16 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-07-17 23:54:04 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection)
2021-07-17 23:54:40 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229)
2021-07-17 23:55:30 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2021-07-17 23:59:07 +0200Null_A(~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Ping timeout: 246 seconds)
2021-07-17 23:59:57 +0200euandreh(~euandreh@2804:14c:33:9fe5:9d95:c71:11e4:3e0f)