2021/07/01

2021-07-01 00:00:13 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan)
2021-07-01 00:00:42 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds)
2021-07-01 00:00:56 +0200Morrow(~MorrowM_@147.161.13.35) (Ping timeout: 252 seconds)
2021-07-01 00:01:54 +0200 <ephemient> chris_: https://rufflewind.com/2014-08-03/haskell-numeric-type-classes-hierarchy
2021-07-01 00:04:05 +0200tlaxkit(~hexchat@170.253.43.19)
2021-07-01 00:04:57 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 00:05:38 +0200chris_(~chris@81.96.113.213)
2021-07-01 00:05:50 +0200warnz(~warnz@2600:1700:77c0:5610:409d:bff0:fc58:d5c4) (Remote host closed the connection)
2021-07-01 00:06:14 +0200dudek(~dudek@185.150.236.112) (Quit: Leaving)
2021-07-01 00:06:40 +0200chris_(~chris@81.96.113.213) (Read error: Connection reset by peer)
2021-07-01 00:06:52 +0200chris_(~chris@81.96.113.213)
2021-07-01 00:08:19 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Remote host closed the connection)
2021-07-01 00:08:20 +0200gxt(~gxt@2001:470:69fc:105::3513) (Remote host closed the connection)
2021-07-01 00:08:20 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Remote host closed the connection)
2021-07-01 00:08:20 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9) (Read error: Connection reset by peer)
2021-07-01 00:08:20 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
2021-07-01 00:08:20 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa) (Read error: Connection reset by peer)
2021-07-01 00:08:20 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Write error: Connection reset by peer)
2021-07-01 00:08:20 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Read error: Connection reset by peer)
2021-07-01 00:08:20 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Read error: Connection reset by peer)
2021-07-01 00:08:21 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a9c) (Remote host closed the connection)
2021-07-01 00:08:21 +0200unrooted(~unrooted@2001:470:69fc:105::a4a) (Remote host closed the connection)
2021-07-01 00:08:21 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Remote host closed the connection)
2021-07-01 00:08:21 +0200carmysilna(~brightly-@2001:470:69fc:105::2190) (Read error: Connection reset by peer)
2021-07-01 00:08:21 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Remote host closed the connection)
2021-07-01 00:08:21 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Write error: Connection reset by peer)
2021-07-01 00:08:22 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Read error: Connection reset by peer)
2021-07-01 00:08:22 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Read error: Connection reset by peer)
2021-07-01 00:08:22 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4) (Read error: Connection reset by peer)
2021-07-01 00:08:22 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Read error: Connection reset by peer)
2021-07-01 00:08:22 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Read error: Connection reset by peer)
2021-07-01 00:08:22 +0200ixlun(~ixlun@2001:470:69fc:105::41b3) (Write error: Connection reset by peer)
2021-07-01 00:08:22 +0200siraben(~siraben@user/siraben) (Write error: Connection reset by peer)
2021-07-01 00:08:23 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Write error: Connection reset by peer)
2021-07-01 00:08:23 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf) (Remote host closed the connection)
2021-07-01 00:08:24 +0200ormaaj(~ormaaj@user/ormaaj) (Read error: Connection reset by peer)
2021-07-01 00:08:24 +0200psydroid(~psydroid@user/psydroid) (Write error: Connection reset by peer)
2021-07-01 00:08:24 +0200Soft(~soft-matr@2001:470:69fc:105::c75) (Remote host closed the connection)
2021-07-01 00:08:24 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc) (Remote host closed the connection)
2021-07-01 00:08:24 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Remote host closed the connection)
2021-07-01 00:08:24 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb) (Remote host closed the connection)
2021-07-01 00:08:24 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1) (Write error: Connection reset by peer)
2021-07-01 00:08:24 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5) (Remote host closed the connection)
2021-07-01 00:08:24 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Read error: Connection reset by peer)
2021-07-01 00:08:24 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Read error: Connection reset by peer)
2021-07-01 00:08:25 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Remote host closed the connection)
2021-07-01 00:08:25 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df) (Remote host closed the connection)
2021-07-01 00:08:26 +0200kadoban(~kadoban@user/kadoban) (Write error: Connection reset by peer)
2021-07-01 00:08:26 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5) (Write error: Connection reset by peer)
2021-07-01 00:08:26 +0200sm[m](~sm@plaintextaccounting/sm) (Write error: Connection reset by peer)
2021-07-01 00:08:26 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Remote host closed the connection)
2021-07-01 00:08:26 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Remote host closed the connection)
2021-07-01 00:08:26 +0200tomferon[m](~tomferon@2001:470:69fc:105::268) (Remote host closed the connection)
2021-07-01 00:08:26 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Write error: Broken pipe)
2021-07-01 00:08:26 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Remote host closed the connection)
2021-07-01 00:08:26 +0200jophish(~jophish@2001:470:69fc:105::670) (Remote host closed the connection)
2021-07-01 00:08:27 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Remote host closed the connection)
2021-07-01 00:08:27 +0200peddie(~peddie@2001:470:69fc:105::25d) (Read error: Connection reset by peer)
2021-07-01 00:08:27 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Read error: Connection reset by peer)
2021-07-01 00:08:27 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Write error: Connection reset by peer)
2021-07-01 00:08:27 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (Write error: Connection reset by peer)
2021-07-01 00:08:27 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (Read error: Connection reset by peer)
2021-07-01 00:08:27 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Write error: Connection reset by peer)
2021-07-01 00:08:27 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2) (Read error: Connection reset by peer)
2021-07-01 00:08:28 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3) (Read error: Connection reset by peer)
2021-07-01 00:08:33 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Remote host closed the connection)
2021-07-01 00:08:33 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3) (Remote host closed the connection)
2021-07-01 00:08:33 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Read error: Connection reset by peer)
2021-07-01 00:08:34 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Remote host closed the connection)
2021-07-01 00:08:34 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Remote host closed the connection)
2021-07-01 00:08:34 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79) (Remote host closed the connection)
2021-07-01 00:08:34 +0200Guest2487(~sylveonma@2001:470:69fc:105::2d95) (Remote host closed the connection)
2021-07-01 00:08:34 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Remote host closed the connection)
2021-07-01 00:08:34 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5) (Remote host closed the connection)
2021-07-01 00:08:34 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (Remote host closed the connection)
2021-07-01 00:08:34 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae) (Remote host closed the connection)
2021-07-01 00:08:34 +0200boxscape(~boxscape@user/boxscape) (Write error: Connection reset by peer)
2021-07-01 00:08:34 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7) (Write error: Broken pipe)
2021-07-01 00:10:00 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79)
2021-07-01 00:12:13 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-07-01 00:12:36 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Read error: Connection reset by peer)
2021-07-01 00:12:38 +0200laguneucl(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-07-01 00:18:34 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 00:20:59 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-07-01 00:21:58 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2021-07-01 00:21:58 +0200psydroid(~psydroid@user/psydroid)
2021-07-01 00:21:58 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-07-01 00:21:58 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-07-01 00:21:58 +0200sm[m](~sm@plaintextaccounting/sm)
2021-07-01 00:21:58 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2021-07-01 00:21:58 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2021-07-01 00:21:58 +0200peddie(~peddie@2001:470:69fc:105::25d)
2021-07-01 00:21:58 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2021-07-01 00:21:58 +0200tomferon[m](~tomferon@2001:470:69fc:105::268)
2021-07-01 00:21:58 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-07-01 00:21:58 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db)
2021-07-01 00:21:58 +0200bb010g(~bb010g@2001:470:69fc:105::9a5)
2021-07-01 00:21:58 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2021-07-01 00:21:58 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2021-07-01 00:21:59 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-07-01 00:21:59 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3)
2021-07-01 00:21:59 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2021-07-01 00:21:59 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-07-01 00:21:59 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a9c)
2021-07-01 00:21:59 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-07-01 00:21:59 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-07-01 00:21:59 +0200kadoban(~kadoban@user/kadoban)
2021-07-01 00:21:59 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2021-07-01 00:21:59 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-07-01 00:21:59 +0200carmysilna(~brightly-@2001:470:69fc:105::2190)
2021-07-01 00:21:59 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2021-07-01 00:21:59 +0200siraben(~siraben@user/siraben)
2021-07-01 00:21:59 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2021-07-01 00:21:59 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3)
2021-07-01 00:21:59 +0200unrooted(~unrooted@2001:470:69fc:105::a4a)
2021-07-01 00:21:59 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5)
2021-07-01 00:21:59 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7)
2021-07-01 00:21:59 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b)
2021-07-01 00:21:59 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2021-07-01 00:21:59 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5)
2021-07-01 00:21:59 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2021-07-01 00:21:59 +0200gxt(~gxt@2001:470:69fc:105::3513)
2021-07-01 00:22:00 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-07-01 00:22:00 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4)
2021-07-01 00:22:00 +0200boxscape(~boxscape@user/boxscape)
2021-07-01 00:22:00 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf)
2021-07-01 00:22:00 +0200ormaaj(~ormaaj@user/ormaaj)
2021-07-01 00:22:00 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2)
2021-07-01 00:22:00 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2021-07-01 00:22:00 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef)
2021-07-01 00:22:10 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-07-01 00:22:10 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d)
2021-07-01 00:22:10 +0200Soft(~soft-matr@2001:470:69fc:105::c75)
2021-07-01 00:22:10 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-07-01 00:22:10 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae)
2021-07-01 00:22:10 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2021-07-01 00:22:10 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-07-01 00:22:11 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2021-07-01 00:22:11 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1)
2021-07-01 00:22:11 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb)
2021-07-01 00:22:11 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4)
2021-07-01 00:22:11 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc)
2021-07-01 00:22:11 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2021-07-01 00:22:12 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df)
2021-07-01 00:22:12 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9)
2021-07-01 00:22:12 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2021-07-01 00:22:12 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa)
2021-07-01 00:22:12 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2021-07-01 00:22:12 +0200ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-07-01 00:22:13 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95)
2021-07-01 00:22:35 +0200SylveonGuest3990
2021-07-01 00:22:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-01 00:27:06 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 00:28:16 +0200 <qrpnxz> i got a sort of <<loop>> error when i tried to do an `any pred`, but `all (not . pred)` worked. Weird.
2021-07-01 00:31:04 +0200tlaxkit(~hexchat@170.253.43.19) (Quit: Saliendo...)
2021-07-01 00:31:52 +0200Morrow(~MorrowM_@147.161.13.35)
2021-07-01 00:33:27 +0200Morrow(~MorrowM_@147.161.13.35) (Read error: Connection reset by peer)
2021-07-01 00:33:43 +0200cjb(~cjb@user/cjb)
2021-07-01 00:33:46 +0200Morrow(~MorrowM_@147.161.13.35)
2021-07-01 00:36:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Remote host closed the connection)
2021-07-01 00:37:39 +0200 <chris_> thx ephemient, monochrom will read up on your stuff. am making food
2021-07-01 00:38:15 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-07-01 00:38:42 +0200[deleted](~zmv@user/notzmv) (Ping timeout: 272 seconds)
2021-07-01 00:39:30 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
2021-07-01 00:40:42 +0200laguneucl(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 240 seconds)
2021-07-01 00:41:03 +0200 <int-e> qrpnxz: well, these are negations of each other.
2021-07-01 00:43:00 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 256 seconds)
2021-07-01 00:44:15 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-01 00:47:23 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-07-01 00:49:36 +0200ec(~ec@gateway/tor-sasl/ec)
2021-07-01 00:50:23 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 00:55:12 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-01 00:59:26 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-07-01 00:59:45 +0200gentauro(~gentauro@user/gentauro)
2021-07-01 01:01:14 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:01:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 01:01:51 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:03:03 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:03:17 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:03:25 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:04:41 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:04:44 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:05:22 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:05:40 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:05:52 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:05:56 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:06:20 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-01 01:06:34 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:06:53 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:07:05 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:07:09 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:07:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 01:07:49 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:08:07 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:08:19 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:08:24 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:09:03 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:09:13 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:09:24 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:09:29 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:10:06 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:10:25 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:10:39 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:10:41 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:11:17 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:11:34 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:11:47 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:11:50 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:12:28 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:12:51 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:13:03 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:13:07 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:13:45 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:14:08 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:14:20 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:14:24 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:14:58 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:15:13 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:15:16 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-07-01 01:15:27 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:15:29 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:16:05 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:16:17 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:16:31 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:16:34 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:17:13 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:17:25 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:17:37 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:17:42 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:18:19 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:18:34 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:18:47 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:18:50 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:19:29 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:19:45 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:19:57 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:20:02 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:20:24 +0200cheater1__(~Username@user/cheater)
2021-07-01 01:20:30 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-07-01 01:20:37 +0200cheater1__cheater
2021-07-01 01:21:19 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:21:24 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:22:01 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:22:18 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:22:30 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:22:34 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:23:12 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:23:25 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:23:37 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:23:41 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 01:24:17 +0200awth13(~user@user/awth13)
2021-07-01 01:24:18 +0200chris_(~chris@81.96.113.213)
2021-07-01 01:24:22 +0200chris_(~chris@81.96.113.213) (K-Lined)
2021-07-01 01:25:56 +0200obfusk_(~quassel@a82-161-150-56.adsl.xs4all.nl)
2021-07-01 01:28:34 +0200obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-01 01:31:44 +0200obfusk_(~quassel@a82-161-150-56.adsl.xs4all.nl) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-07-01 01:31:54 +0200obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)
2021-07-01 01:42:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-01 01:44:18 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-07-01 01:48:40 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-07-01 01:49:06 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at) (Remote host closed the connection)
2021-07-01 01:49:18 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-07-01 01:49:43 +0200favonia(~favonia@user/favonia)
2021-07-01 01:50:19 +0200Morrow(~MorrowM_@147.161.13.35) (Read error: Connection reset by peer)
2021-07-01 01:50:38 +0200Morrow(~MorrowM_@147.161.13.35)
2021-07-01 01:50:54 +0200ham2(~ham4@d8D8627D5.access.telenet.be) (Ping timeout: 272 seconds)
2021-07-01 01:51:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 01:55:09 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-01 01:56:06 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2021-07-01 02:00:02 +0200zopsi(zopsi@2600:3c00::f03c:91ff:fe14:551f) (Quit: Oops)
2021-07-01 02:00:20 +0200zopsi(zopsi@2600:3c00::f03c:91ff:fe14:551f)
2021-07-01 02:00:49 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 265 seconds)
2021-07-01 02:01:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Remote host closed the connection)
2021-07-01 02:13:21 +0200TranquilEcho(~grom@user/tranquilecho)
2021-07-01 02:14:09 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-01 02:20:41 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net) (Ping timeout: 272 seconds)
2021-07-01 02:20:42 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-07-01 02:20:56 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-01 02:21:36 +0200cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-07-01 02:22:01 +0200cheater(~Username@user/cheater)
2021-07-01 02:22:38 +0200sheepduck(~sheepduck@user/sheepduck)
2021-07-01 02:22:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 02:22:58 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-07-01 02:23:36 +0200cmburnett(~cmburnett@c-73-37-184-31.hsd1.mn.comcast.net)
2021-07-01 02:25:34 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net)
2021-07-01 02:25:54 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 02:28:39 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-07-01 02:28:51 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 265 seconds)
2021-07-01 02:29:49 +0200pagnol(~user@014198154145.ctinets.com) (Ping timeout: 265 seconds)
2021-07-01 02:30:40 +0200Morrow(~MorrowM_@147.161.13.35) (Ping timeout: 256 seconds)
2021-07-01 02:34:06 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-01 02:35:14 +0200obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-01 02:35:36 +0200dajoer(~david@user/gvx)
2021-07-01 02:40:19 +0200Morrow(~MorrowM_@147.161.13.35)
2021-07-01 02:43:35 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-01 02:43:43 +0200obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)
2021-07-01 02:44:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Remote host closed the connection)
2021-07-01 02:46:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 02:47:16 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:1749:70f2:c3b4:7591) (Remote host closed the connection)
2021-07-01 02:47:33 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-07-01 02:48:58 +0200notzmv(~zmv@user/notzmv)
2021-07-01 02:51:08 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 02:55:50 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-01 02:55:54 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-01 02:56:10 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-07-01 02:56:28 +0200favonia(~favonia@user/favonia)
2021-07-01 02:58:30 +0200Nolrai(~Nolrai@c-76-27-202-218.hsd1.or.comcast.net)
2021-07-01 02:58:55 +0200willbush(~user@47.183.200.14)
2021-07-01 03:02:28 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 272 seconds)
2021-07-01 03:02:46 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 03:03:54 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
2021-07-01 03:05:14 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 256 seconds)
2021-07-01 03:05:30 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-01 03:07:33 +0200 <dsal> I have a really dumb basic question. I've been doing a bit of refactoring around an API change I made and I found myself doing `Just x = ...` in a where clause once or twice. I realized I don't exactly understand what that does.
2021-07-01 03:07:43 +0200 <dsal> Can someone help my mental model be a bit more complete here?
2021-07-01 03:08:17 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-01 03:08:40 +0200 <Axman6> it's an irrefutable pattern match, it basically creates code that looks like case ... of Just x -> <define x>; Nothing -> error "pattern match failed"
2021-07-01 03:09:08 +0200 <Axman6> it's generally not a safe thing to do, but if you know the result is guaranteed to be Just, it's fine
2021-07-01 03:09:44 +0200 <dsal> Yeah, I think I understood the safety of it and stuff, I just had a bit of trouble understanding what it actually did. My mental model isn't quite right there.
2021-07-01 03:09:46 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 256 seconds)
2021-07-01 03:10:04 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 03:10:14 +0200favonia(~favonia@user/favonia)
2021-07-01 03:10:35 +0200 <Axman6> it's just a pattern match, the same as you can do let (x,y) = (x0+1,y0+2) to give definitions for x and y
2021-07-01 03:11:23 +0200 <dsal> I guess it doesn't make sense to ask what to do if it's `Nothing` because there's no `x` to name.
2021-07-01 03:11:39 +0200 <c_wraith> Whoa.. it's not like that case expression in one important detail
2021-07-01 03:12:00 +0200 <c_wraith> It's an irrefutable match, which means that unlike a case statement, it won't be evaluated before choosing a branch
2021-07-01 03:12:01 +0200 <Axman6> it throws an error
2021-07-01 03:12:18 +0200 <c_wraith> the pattern match is only done when x is evaluated
2021-07-01 03:12:32 +0200 <Nolrai> So, are Control.Lens style lenses worth using? I am using them with a small/medium size project and they just seem to make refactoring harder.
2021-07-01 03:12:38 +0200hammock(~Hammock@2600:1700:19a1:3330::625)
2021-07-01 03:12:38 +0200 <dsal> I think that's also part of my confusion. So when does stuff break?
2021-07-01 03:12:53 +0200 <c_wraith> > let Just x = Nothing in "hello"
2021-07-01 03:12:54 +0200 <lambdabot> "hello"
2021-07-01 03:13:05 +0200 <c_wraith> > case Nothing of Just x -> "hello"
2021-07-01 03:13:07 +0200 <lambdabot> "*Exception: <interactive>:(3,1)-(4,22): Non-exhaustive patterns in case
2021-07-01 03:13:11 +0200 <Axman6> > let Just x = Nothing in x + 1 :: Int
2021-07-01 03:13:13 +0200 <lambdabot> *Exception: <interactive>:3:5-20: Non-exhaustive patterns in Just x
2021-07-01 03:13:16 +0200 <Nolrai> @c_wraith so its more like `do ~(x, y) = `
2021-07-01 03:13:16 +0200 <lambdabot> Unknown command, try @list
2021-07-01 03:13:32 +0200 <c_wraith> yes, ~ is how you explicitly introduce irrefutable matches
2021-07-01 03:13:42 +0200 <c_wraith> > case Nothing of ~(Just x) -> "hello"
2021-07-01 03:13:44 +0200 <lambdabot> "hello"
2021-07-01 03:14:14 +0200 <dsal> Nolrai: what do you find is harder in refactoring lens?
2021-07-01 03:15:00 +0200Morrow(~MorrowM_@147.161.13.35) (Read error: Connection reset by peer)
2021-07-01 03:15:21 +0200MorrowM(~MorrowM_@147.161.13.35)
2021-07-01 03:15:47 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-01 03:15:49 +0200 <c_wraith> it's funny, the lens laws exist specifically so that you can refactor without thinking about it. (this is the problem law-breaking optics cause - you have to think when you refactor)
2021-07-01 03:16:14 +0200 <Axman6> yeah also curious what problems you're running into Nolrai
2021-07-01 03:16:44 +0200MorrowM(~MorrowM_@147.161.13.35) (Remote host closed the connection)
2021-07-01 03:17:30 +0200xff0x(~xff0x@2001:1a81:53f8:b100:933a:3ba5:1174:9474) (Ping timeout: 240 seconds)
2021-07-01 03:17:31 +0200Morrow(~MorrowM_@147.161.13.35)
2021-07-01 03:19:34 +0200 <Nolrai> Hmm. Actually this is really weird, hmm. I am not sure its the Lens librarie's fault, function arguments just seem to be missing all over the place. What did I do?!?
2021-07-01 03:19:44 +0200xff0x(~xff0x@2001:1a81:5237:1000:d9df:afaf:2f58:a5ba)
2021-07-01 03:20:50 +0200 <Nolrai> It doesn't help that the VSCode Haskell plugin keeps crashing or hanging.
2021-07-01 03:21:53 +0200 <dsal> Every time I `type X = Y` something and then go back and change `X` to a `newtype`, I find all kinds of places I got sloppy. I am beginning to consider `type` harmful.
2021-07-01 03:21:54 +0200Morrow(~MorrowM_@147.161.13.35) (Ping timeout: 240 seconds)
2021-07-01 03:22:14 +0200 <Nolrai> I consider type harmful.
2021-07-01 03:22:32 +0200 <Cale> Mostly it is, yeah
2021-07-01 03:22:43 +0200 <Nolrai> Or rather it should only be used for abreviations.
2021-07-01 03:23:22 +0200 <Cale> I think Lens can kind of get away with it only because what its synonyms unfold to is pretty uniform, and you sort of know to expect them
2021-07-01 03:23:30 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-01 03:23:36 +0200 <Nolrai> Yeah.
2021-07-01 03:24:47 +0200 <Cale> That said, I do think people overuse lenses to death a lot of the time. They certainly have their places, but if there's a reasonable way to not use Lens in any given scenario, then I probably won't.
2021-07-01 03:24:54 +0200 <Nolrai> Hmm. I mean I don't think HSpec's `type Spec = SpecM ()` I think its dumb because it only saves 3 characters, so is a bad abreviation, but its an example of something that isn't harmful the way many uses of `type` are.
2021-07-01 03:25:08 +0200 <Nolrai> * is harmful.
2021-07-01 03:25:14 +0200favonia(~favonia@user/favonia)
2021-07-01 03:25:47 +0200 <Cale> Yeah, why not just rename SpecM to Spec and then get rid of the synonym, and write Spec () a bit?
2021-07-01 03:25:57 +0200 <c_wraith> I dislike any type alias that looks like it has a different kind than the expression it expands to
2021-07-01 03:26:11 +0200stevenxl_(~stevenlei@68.235.43.101)
2021-07-01 03:26:29 +0200 <c_wraith> kinds are important documentation, too!
2021-07-01 03:26:38 +0200 <Nolrai> That makes sense.
2021-07-01 03:27:08 +0200 <Cale> Example of that?
2021-07-01 03:27:27 +0200 <c_wraith> type Foo m = FooT m ()
2021-07-01 03:27:42 +0200 <Cale> ah, yeah, that's kinda gross
2021-07-01 03:27:48 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-01 03:27:53 +0200 <monochrom> Finally my opinion is not unpopular. >:)
2021-07-01 03:28:22 +0200 <Nolrai> Is there a less awful way to do this `let [a,b,c,d,e,f] = bitToRB w <$> [0..5] in Cell a b c d e f` ?
2021-07-01 03:29:18 +0200 <monochrom> "type alias = failing to make up your mind whether you want an abstraction or not" before it was cool.
2021-07-01 03:29:23 +0200 <Nolrai> Heh.
2021-07-01 03:29:28 +0200stevenxl(~stevenlei@68.235.43.157) (Ping timeout: 258 seconds)
2021-07-01 03:30:17 +0200 <Nolrai> Yeah, I am pretty sure if it wasn't part of the language from the beginning, it wouldn't be getting put in.
2021-07-01 03:31:44 +0200 <Cale> monochrom: Yeah, and the thing is, it perhaps *could* have been a nice means of abstraction in conjunction with the module system, if it were treated a little differently
2021-07-01 03:32:09 +0200 <monochrom> That is true. CLU and SML do it properly.
2021-07-01 03:32:27 +0200 <c_wraith> Also, I don't understand any of the type aliases in Template Haskell. ExpQ is not better than Q Exp
2021-07-01 03:32:27 +0200carbolymer(~carbolyme@dropacid.net) (Read error: Connection reset by peer)
2021-07-01 03:32:41 +0200 <monochrom> internal to your module it's an alias. When exported it's a newtype to your user.
2021-07-01 03:32:55 +0200 <Cale> c_wraith: Not only do I agree, but I hate that entire module of lower-cased versions of everything
2021-07-01 03:33:10 +0200 <monochrom> CLU is why I like Liskov.
2021-07-01 03:33:17 +0200carbolymer(~carbolyme@dropacid.net)
2021-07-01 03:33:25 +0200 <Cale> It's like, a module of stuff for people who are uncomfortable with using monads
2021-07-01 03:33:49 +0200 <c_wraith> typing "return" adds a bunch of letters!
2021-07-01 03:34:00 +0200 <Cale> Which is probably why it exists to begin with, because it was constructed at a time when everyone was not entirely comfortable with monads
2021-07-01 03:34:23 +0200raoul(~raoul@nomnomnomnom.co.uk) (Quit: The Lounge - https://thelounge.github.io)
2021-07-01 03:35:42 +0200 <monochrom> Haskellers uncomfortable with monads. Almost sounds like an oxymoron.
2021-07-01 03:36:08 +0200 <monochrom> Consider pythonistas uncomfortable with objects and assignment statements.
2021-07-01 03:36:29 +0200 <monochrom> Dennis Ritchie uncomfortable with pointers.
2021-07-01 03:36:34 +0200 <Cale> We also need to get more actually useful stuf into Template Haskell
2021-07-01 03:36:58 +0200 <jao> lispers uncomfortable with parentheses
2021-07-01 03:36:59 +0200 <c_wraith> typed template haskell is in a really awkward spot right now. Though at least liftTyped exists now
2021-07-01 03:38:05 +0200 <Cale> Like, did you know that reifyInstances, when given a type that has type variables in it, will find all instances which unify with those variables, and if you want those variables not to be specialised, you have to pull some skolemization trickery by hand?
2021-07-01 03:38:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 03:38:50 +0200 <Cale> I sure do, since it ends up being something I need to do every time I use TH
2021-07-01 03:39:09 +0200 <Axman6> Anyone know if there's an IRC channel for Rel8?
2021-07-01 03:40:13 +0200 <Cale> Also, this is quite fancy, but I'd really love to have more ways to interact with the type checker while building declarations and expressions in TH
2021-07-01 03:40:35 +0200 <Cale> It would be really nice to be able to build an expression and ask "if I were to declare this, what type would you infer for it"?
2021-07-01 03:41:15 +0200 <Cale> 99% of the work of any TH I write is figuring out what constraints go in my instance head.
2021-07-01 03:41:42 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-01 03:41:46 +0200 <Cale> which basically amounts to imitating the typechecker/instance resolution
2021-07-01 03:42:24 +0200cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 252 seconds)
2021-07-01 03:44:15 +0200 <Cale> https://hackage.haskell.org/package/th-abstraction is really good though, at least most of the time
2021-07-01 03:44:18 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
2021-07-01 03:44:58 +0200 <Cale> Sometimes the canonicalisation of GADTs that gives you a bunch of type equalities is doing negative work, but most of the time at least it's pretty good
2021-07-01 03:45:04 +0200 <Axman6> monochrom: or go programmings writing more than two lines without explicit error checking
2021-07-01 03:45:10 +0200 <Axman6> programmers*
2021-07-01 03:46:41 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 03:47:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-07-01 03:48:12 +0200 <monochrom> :)
2021-07-01 03:48:20 +0200adanwan_(~adanwan@gateway/tor-sasl/adanwan)
2021-07-01 03:48:42 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2021-07-01 03:49:16 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2021-07-01 03:49:36 +0200neurocyte43(~neurocyte@45.14.191.41)
2021-07-01 03:49:37 +0200neurocyte43(~neurocyte@45.14.191.41) (Changing host)
2021-07-01 03:49:37 +0200neurocyte43(~neurocyte@user/neurocyte)
2021-07-01 03:51:37 +0200 <dsal> ... But how long are you comfortable not knowing whether err is not nil?
2021-07-01 03:52:48 +0200 <Axman6> exactly once, because it should be immutable
2021-07-01 03:53:24 +0200neurocyte4(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2021-07-01 03:53:24 +0200neurocyte43neurocyte4
2021-07-01 03:53:45 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-07-01 03:54:27 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-01 03:55:14 +0200 <dsal> Most go code is just EitherT without helpful syntax
2021-07-01 03:58:43 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-01 03:59:00 +0200 <Axman6> mo' lines, mo' productive
2021-07-01 03:59:02 +0200favonia(~favonia@user/favonia)
2021-07-01 04:00:58 +0200egoist(~egoist@186.235.80.194) (Quit: WeeChat 3.2)
2021-07-01 04:01:06 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 04:01:19 +0200cjb(~cjb@user/cjb) ()
2021-07-01 04:05:07 +0200cheater(~Username@user/cheater) (Ping timeout: 258 seconds)
2021-07-01 04:05:37 +0200cheater(~Username@user/cheater)
2021-07-01 04:07:48 +0200sheepduck(~sheepduck@user/sheepduck) (Ping timeout: 258 seconds)
2021-07-01 04:12:17 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-01 04:12:31 +0200juhp(~juhp@128.106.188.66)
2021-07-01 04:12:32 +0200finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2021-07-01 04:12:40 +0200stevenxl_(~stevenlei@68.235.43.101) (Ping timeout: 256 seconds)
2021-07-01 04:12:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-01 04:18:23 +0200thiagomm(~thiagomm@179.156.177.136)
2021-07-01 04:18:54 +0200thiagomm(~thiagomm@179.156.177.136) (Client Quit)
2021-07-01 04:20:37 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-01 04:21:23 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-01 04:22:49 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-01 04:24:10 +0200stevenxl(~stevenlei@68.235.43.101)
2021-07-01 04:25:30 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-07-01 04:27:11 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-01 04:29:36 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-07-01 04:29:36 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
2021-07-01 04:29:36 +0200finn_elijaFinnElija
2021-07-01 04:29:52 +0200stevenxl(~stevenlei@68.235.43.101) (Ping timeout: 272 seconds)
2021-07-01 04:30:25 +0200td_(~td@94.134.91.65) (Ping timeout: 258 seconds)
2021-07-01 04:32:16 +0200td_(~td@94.134.91.214)
2021-07-01 04:34:46 +0200derelict(~derelict@user/derelict) (Ping timeout: 256 seconds)
2021-07-01 04:35:54 +0200haliq(~haliq@128.106.240.245)
2021-07-01 04:40:09 +0200Nolrai(~Nolrai@c-76-27-202-218.hsd1.or.comcast.net) (Quit: Client closed)
2021-07-01 04:42:40 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-01 04:45:42 +0200 <qrpnxz> thoughts on this? https://termbin.com/fs8d
2021-07-01 04:48:11 +0200 <jackdk> haskell is a pretty cool imperative language
2021-07-01 04:48:32 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-07-01 04:48:39 +0200 <qrpnxz> haha, the haskell one is a bit more inscrutable, but it's safe! Here's the Go one for comparison: Go program just as fast as the C one
2021-07-01 04:48:57 +0200 <qrpnxz> https://termbin.com/26pd
2021-07-01 04:49:49 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-01 04:50:01 +0200 <qrpnxz> half of the fast C and haskell programs is recreating what go slices do for free
2021-07-01 04:50:05 +0200 <qrpnxz> truly sad
2021-07-01 04:50:16 +0200 <qrpnxz> should be illegal to have a language without go slices
2021-07-01 04:50:42 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-01 04:51:07 +0200favonia(~favonia@user/favonia)
2021-07-01 04:51:37 +0200 <jackdk> it should be illegal to have nulls just lying around in a language but here we are
2021-07-01 04:51:53 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 04:53:12 +0200 <qrpnxz> meh
2021-07-01 04:54:23 +0200 <keltono> ditto for not having generics :P
2021-07-01 04:58:42 +0200 <qrpnxz> version two is rather nice and it's only 4 times slower
2021-07-01 04:59:38 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-01 05:00:10 +0200 <nshepperd> go slices are just dynamic vectors?
2021-07-01 05:00:40 +0200 <qrpnxz> yeah they are a pointer, a length, and a capacity
2021-07-01 05:01:27 +0200 <nshepperd> there's a package for those
2021-07-01 05:01:49 +0200 <qrpnxz> someone said that before and it wasn't it, but if you wanna share
2021-07-01 05:02:40 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 05:03:16 +0200img(~img@user/img)
2021-07-01 05:03:37 +0200 <nshepperd> dynamic-mvector? doesn't implement the unboxed version though, which is lame
2021-07-01 05:05:18 +0200 <qrpnxz> nice that it has push, but missing slices
2021-07-01 05:06:07 +0200 <qrpnxz> also it's really annoying that data.vector's "safe" move requires both sides to be the same length
2021-07-01 05:10:24 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2021-07-01 05:11:02 +0200derelict(~derelict@user/derelict)
2021-07-01 05:11:02 +0200 <nshepperd> odd that there's no slice function given all the doc comments about what happens to slices
2021-07-01 05:11:24 +0200 <nshepperd> in go, are slices copy on write or what
2021-07-01 05:11:49 +0200 <dsal> go slices are immutable
2021-07-01 05:12:14 +0200 <nshepperd> so they're not dynamic vectors at all?
2021-07-01 05:12:47 +0200 <dsal> You can write *through* them and "reslice" them (which copies them). There's an `append` operation which is basically realloc + copy
2021-07-01 05:12:55 +0200 <dsal> (with all the downsides of being realloc + copy)
2021-07-01 05:14:42 +0200hammock(~Hammock@2600:1700:19a1:3330::625) (Ping timeout: 240 seconds)
2021-07-01 05:15:07 +0200 <nshepperd> weird
2021-07-01 05:15:25 +0200 <dsal> You don't much use arrays in go because the size is part of the type. So slices are the general thing. They have some pointy edges, though.
2021-07-01 05:18:45 +0200jao(jao@gateway/vpn/protonvpn/jao) (Remote host closed the connection)
2021-07-01 05:19:12 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-07-01 05:19:25 +0200 <qrpnxz> go slices are not immutable
2021-07-01 05:19:25 +0200 <nshepperd> i can imagine
2021-07-01 05:19:26 +0200 <qrpnxz> wtf
2021-07-01 05:19:32 +0200cheater(~Username@user/cheater)
2021-07-01 05:20:59 +0200 <qrpnxz> what is "pointy" about slices?
2021-07-01 05:21:22 +0200 <dsal> https://play.golang.org/p/b7uoMnonP4Z
2021-07-01 05:21:25 +0200 <dsal> Stuff like this.
2021-07-01 05:21:29 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-01 05:21:30 +0200 <dsal> Why do you think go slices are mutable?
2021-07-01 05:21:54 +0200sheepduck(~sheepduck@user/sheepduck)
2021-07-01 05:22:07 +0200 <qrpnxz> uh cause they are
2021-07-01 05:22:12 +0200 <qrpnxz> idk what you are demonstrating here btw
2021-07-01 05:22:21 +0200 <nshepperd> this go program is claimed to be fast, so i assume 'primes = append(primes, n)' is not copying the vector, but writing to the available space at the end of the storage
2021-07-01 05:22:33 +0200 <qrpnxz> only grows as needed
2021-07-01 05:22:34 +0200 <dsal> (oops, messed up that format string)
2021-07-01 05:22:41 +0200 <dsal> qrpnxz: Please demonstrate mutating a slice.
2021-07-01 05:22:48 +0200 <qrpnxz> s[0] = 1
2021-07-01 05:22:53 +0200 <dsal> That doesn't change s.
2021-07-01 05:23:15 +0200 <qrpnxz> obj.set(0) doesn't change obj either
2021-07-01 05:23:32 +0200 <dsal> I don't know what obj is.
2021-07-01 05:23:53 +0200 <qrpnxz> a reference type, like slices. You can imagine it as any java object
2021-07-01 05:23:56 +0200 <dsal> nshepperd: append *might* copy and it might mutate the underlying array. If it mutates the underlying array, it might affect other things that share the array.
2021-07-01 05:24:20 +0200 <nshepperd> in which case, a = append(primes, 1); b = append (primes, 2) will result in both a and b containing 2
2021-07-01 05:24:39 +0200 <dsal> nshepperd: Yeah, that's what I'm demonstrating. It'll do that *sometimes*
2021-07-01 05:24:46 +0200 <qrpnxz> right, append returns a new slice, the new slice might be pointing to new memory. I don't care about the old slice, so i assign it on top of the old one
2021-07-01 05:24:50 +0200 <nshepperd> sounds horribly
2021-07-01 05:25:28 +0200 <dsal> There are a few places go makes for strange bugs.
2021-07-01 05:25:36 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-01 05:25:48 +0200 <qrpnxz> a is always looks like primes with 1 at the end
2021-07-01 05:25:55 +0200 <qrpnxz> b always looks like primes with 2 at the end
2021-07-01 05:26:15 +0200 <dsal> qrpnxz: that's not true, as I demonstrated here: https://play.golang.org/p/FlJSCKXl-xE
2021-07-01 05:26:16 +0200 <nshepperd> how does append enforce that? reference counting?
2021-07-01 05:26:42 +0200 <qrpnxz> ah your thing works now
2021-07-01 05:26:46 +0200 <qrpnxz> ah yeah ur right lol
2021-07-01 05:26:56 +0200 <qrpnxz> well w/e, this literally never comes up
2021-07-01 05:26:59 +0200 <nshepperd> lol
2021-07-01 05:27:07 +0200 <dsal> This comes up *all the time*.
2021-07-01 05:27:21 +0200 <qrpnxz> if you need a nice pure slice you just make yourself a new one like append([]int{}, old...)
2021-07-01 05:27:31 +0200 <qrpnxz> lol where
2021-07-01 05:27:34 +0200 <dsal> You can reslice with a maximum capacity without forcing a copy.
2021-07-01 05:27:46 +0200 <dsal> In large go codebases? I work on... very large go codebases.
2021-07-01 05:27:47 +0200 <qrpnxz> yeah so?
2021-07-01 05:27:48 +0200 <nshepperd> so append assumes uniqueness
2021-07-01 05:27:53 +0200 <nshepperd> that's pretty sharp
2021-07-01 05:28:02 +0200 <qrpnxz> append doesn't assume anything
2021-07-01 05:28:05 +0200 <qrpnxz> just does what it does
2021-07-01 05:28:19 +0200 <dsal> append does two distinct things depending on stuff you're probably not paying attention to.
2021-07-01 05:28:21 +0200 <qrpnxz> ok it assumes that you know what append does
2021-07-01 05:28:22 +0200 <qrpnxz> lol
2021-07-01 05:29:01 +0200 <dsal> If you're below cap, it just copies your new value into the underlying array past the len index and returns a new slice with len incremented. If you're at cap, it allocates a new array, copies all the existing data and then adds your new item.
2021-07-01 05:29:19 +0200 <dsal> (which is sort of like realloc, which also has fun bugs)
2021-07-01 05:30:12 +0200 <qrpnxz> idk how this ever comes up as a problem honestly, if you got a foreign slice that you don't own and you want to append and stuff, you copy it
2021-07-01 05:30:24 +0200 <dsal> Why would you copy it?
2021-07-01 05:30:34 +0200rachel231(~rachel231@c-73-142-199-151.hsd1.nh.comcast.net)
2021-07-01 05:30:59 +0200 <dsal> You can always reslice adjusting the cap down.
2021-07-01 05:31:06 +0200 <qrpnxz> if you don't own it and you wanna do crap like append to it, or use it after the real owner needs it again
2021-07-01 05:31:21 +0200 <qrpnxz> go giving you the change to copy if you need to and not copy if you don't need to
2021-07-01 05:31:31 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-07-01 05:32:15 +0200 <qrpnxz> some api gives you a copy every time, sometimes it gives you a buffer slice only valid until next call. If it's the latter you can get very efficient, but if you need to keep the slice past the call, you copy yourself
2021-07-01 05:33:02 +0200 <nshepperd> if you need to copy it before appending is safe, shouldn't copying return a different type so you don't fuck it up
2021-07-01 05:33:32 +0200 <dsal> In general, I try to steer people towards doing stuff that doesn't create bugs. It's difficult sometimes.
2021-07-01 05:33:52 +0200 <qrpnxz> bro this is not haskell, we don't do immutable data structures generally lol
2021-07-01 05:34:19 +0200 <nshepperd> idk this api seems like a mistake
2021-07-01 05:34:30 +0200 <qrpnxz> like for example https://golang.org/pkg/bufio/#Reader.ReadSlice if you don't need to keep the bytes, then you can zip through a reader super fast, by not copying, but if you do need them you just copy, or use another method that automatically copies
2021-07-01 05:34:34 +0200 <nshepperd> compared to plain ol dynamic vectors
2021-07-01 05:34:58 +0200 <dsal> Part of my day job is teaching people at google how to write less buggy go code.
2021-07-01 05:34:59 +0200 <qrpnxz> well actually there is one exception, which is strings. If you want immutable byte slice in go you use string
2021-07-01 05:35:33 +0200 <qrpnxz> dsal, i thought googlers were supposed to be good, not reuse slices they weren't supposed to
2021-07-01 05:35:36 +0200spruit11(~quassel@2a02:a467:ccd6:1:d8ed:8d81:7c94:d830)
2021-07-01 05:35:56 +0200 <nshepperd> if googlers were good they wouldn't invent bad APIs
2021-07-01 05:36:00 +0200 <dsal> haha
2021-07-01 05:36:02 +0200 <qrpnxz> xd
2021-07-01 05:36:34 +0200curiousggay_(~curiousgg@77-120-144-167.kha.volia.net)
2021-07-01 05:36:34 +0200 <qrpnxz> haskell definitely safer, but go so much more productive for me still with it's readers and writers
2021-07-01 05:36:43 +0200 <qrpnxz> *its
2021-07-01 05:36:49 +0200cloudy``(~user@2600:8807:c207:f00:d412:4cce:d9f1:ba0)
2021-07-01 05:37:02 +0200 <DigitalKiwi> go is garbage
2021-07-01 05:37:17 +0200 <qrpnxz> nah
2021-07-01 05:37:29 +0200Feuermagier_(~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a) (Read error: Connection reset by peer)
2021-07-01 05:37:29 +0200curiousgay(~curiousgg@77-120-144-167.kha.volia.net) (Read error: Connection reset by peer)
2021-07-01 05:37:29 +0200the_proffesor(~theproffe@2601:282:847f:8010::3a29)
2021-07-01 05:37:29 +0200Feuermagier_(~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a)
2021-07-01 05:37:29 +0200justache(~justache@user/justache) (Quit: Ping timeout (120 seconds))
2021-07-01 05:37:29 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-07-01 05:37:45 +0200justache(~justache@user/justache)
2021-07-01 05:37:50 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-01 05:37:54 +0200zmt00(~zmt00@user/zmt00)
2021-07-01 05:38:03 +0200 <dsal> I can get so much done so much faster in Haskell.
2021-07-01 05:38:32 +0200the_proffesor(~theproffe@2601:282:847f:8010::3a29) (Changing host)
2021-07-01 05:38:32 +0200the_proffesor(~theproffe@user/theproffesor)
2021-07-01 05:38:32 +0200theproffesorGuest2594
2021-07-01 05:38:32 +0200the_proffesortheproffesor
2021-07-01 05:38:38 +0200 <qrpnxz> yeah i hope to learn to do that one day, for now gotta use another language for results
2021-07-01 05:38:42 +0200cloudy`(~user@2600:8807:c207:f00:d022:dd81:f0f8:bb22) (Ping timeout: 240 seconds)
2021-07-01 05:38:42 +0200spruit11_(~quassel@2a02:a467:ccd6:1:70d9:6b8a:7264:8769) (Ping timeout: 240 seconds)
2021-07-01 05:38:42 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2021-07-01 05:38:42 +0200Guest2594(~theproffe@user/theproffesor) (Ping timeout: 240 seconds)
2021-07-01 05:38:48 +0200 <qrpnxz> like net package too good
2021-07-01 05:38:55 +0200 <qrpnxz> how to live without net package
2021-07-01 05:39:32 +0200 <dsal> I just realized I've been working in go for nearly 12 years. :/ But it's still painful.
2021-07-01 05:40:13 +0200 <qrpnxz> how are haskellers doing error handling? I barely see any, do they just use exceptions or what?
2021-07-01 05:40:40 +0200 <dsal> errors? We don't write code with errors. :P
2021-07-01 05:41:10 +0200 <qrpnxz> xd
2021-07-01 05:41:13 +0200 <nshepperd> I/O code uses exceptions, generally
2021-07-01 05:41:17 +0200 <dsal> It depends on what you mean. There's maybe/either kinds of things and there's various exceptions.
2021-07-01 05:41:24 +0200 <qrpnxz> ig the database just never fails when you program in haskell
2021-07-01 05:41:26 +0200 <dsal> I don't enjoy exceptions in haskell any more than I do in any other language.
2021-07-01 05:42:04 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2021-07-01 05:42:18 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2021-07-01 05:42:40 +0200 <dsal> `bracket` is fine. `catch`/`catches` and the like are OK. Getting reckless with async exceptions can be exciting.
2021-07-01 05:42:56 +0200alx741(~alx741@186.178.108.157) (Quit: alx741)
2021-07-01 05:43:07 +0200 <qrpnxz> It's continuation time
2021-07-01 05:43:45 +0200 <myShoggoth> Haskell Foundation June Update: https://discourse.haskell.org/t/haskell-foundation-june-update/2722
2021-07-01 05:43:53 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-07-01 05:45:26 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 05:46:42 +0200sheepduck(~sheepduck@user/sheepduck) (Ping timeout: 252 seconds)
2021-07-01 05:47:16 +0200img(~img@user/img)
2021-07-01 05:49:21 +0200adanwan_(~adanwan@gateway/tor-sasl/adanwan) (Quit: _)
2021-07-01 05:49:33 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2021-07-01 05:52:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 05:53:40 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-01 05:56:58 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-07-01 05:59:30 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2021-07-01 06:03:34 +0200cheater(~Username@user/cheater) (Ping timeout: 258 seconds)
2021-07-01 06:03:43 +0200cheater(~Username@user/cheater)
2021-07-01 06:04:16 +0200cloudy(~user@2600:8807:c207:f00:d022:dd81:f0f8:bb22) (Remote host closed the connection)
2021-07-01 06:04:16 +0200raoul(~raoul@nom4.xyz)
2021-07-01 06:04:57 +0200rachel231(~rachel231@c-73-142-199-151.hsd1.nh.comcast.net) (Quit: Connection closed)
2021-07-01 06:07:55 +0200cloudy``(~user@2600:8807:c207:f00:d412:4cce:d9f1:ba0) (Remote host closed the connection)
2021-07-01 06:08:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 06:16:10 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it)
2021-07-01 06:18:41 +0200azeem(~azeem@dynamic-adsl-94-34-20-185.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-01 06:22:30 +0200eight(~eight@user/eight) (Quit: leaving)
2021-07-01 06:24:11 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 06:28:18 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-07-01 06:30:41 +0200 <sm[m]> bravo cabal documentors! https://cabal.readthedocs.io/en/3.4/cabal-projectindex.html is fantastic
2021-07-01 06:33:33 +0200sheepduck(~sheepduck@user/sheepduck)
2021-07-01 06:40:37 +0200sheepduck(~sheepduck@user/sheepduck) (Remote host closed the connection)
2021-07-01 06:43:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-01 06:44:05 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-01 06:46:26 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: node-irc says goodbye)
2021-07-01 06:48:53 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-07-01 06:50:46 +0200derelict(~derelict@user/derelict) (Ping timeout: 256 seconds)
2021-07-01 07:03:47 +0200favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-07-01 07:07:26 +0200favonia(~favonia@user/favonia)
2021-07-01 07:08:18 +0200notzmv(~zmv@user/notzmv)
2021-07-01 07:16:18 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-01 07:19:25 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-01 07:22:19 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-01 07:23:31 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-07-01 07:42:01 +0200curiousggay_curiousgay
2021-07-01 07:43:04 +0200Guest39(~steve@2403:6200:8872:c9a0:7400:c8ff:92fb:3985)
2021-07-01 07:48:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 07:48:59 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 244 seconds)
2021-07-01 07:49:06 +0200michalz(~michalz@185.246.204.105)
2021-07-01 07:50:04 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2021-07-01 07:54:20 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 07:57:48 +0200 <feetwind> what ghc flags do i need to get a good callstack from a failing (Data.Vector.!) call? do i need to add HasCallStack constraints everywhere?
2021-07-01 07:58:18 +0200 <feetwind> (the program is quite large so the latter is not very realistic)
2021-07-01 07:58:36 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 07:58:55 +0200Guest39(~steve@2403:6200:8872:c9a0:7400:c8ff:92fb:3985) (Quit: Leaving)
2021-07-01 08:01:34 +0200cmburnett(~cmburnett@c-73-37-184-31.hsd1.mn.comcast.net) ()
2021-07-01 08:02:43 +0200qbt(~edun@user/edun)
2021-07-01 08:03:09 +0200anandprabhu(~anandprab@94.202.243.198)
2021-07-01 08:03:12 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-01 08:05:04 +0200 <feetwind> or is there maybe a ghc plugin that can add HasCallStack constraints per module?
2021-07-01 08:05:21 +0200chris_(~chris@81.96.113.213)
2021-07-01 08:05:21 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-07-01 08:06:15 +0200Codaraxis__(~Codaraxis@193.32.126.157)
2021-07-01 08:07:46 +0200myShoggoth(~myShoggot@75.164.51.64) (Ping timeout: 258 seconds)
2021-07-01 08:08:09 +0200dka(~code-is-a@ns3059207.ip-193-70-33.eu)
2021-07-01 08:08:55 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-07-01 08:09:42 +0200chris_(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-07-01 08:10:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 08:10:33 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-01 08:10:54 +0200Codaraxis_(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 272 seconds)
2021-07-01 08:12:58 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-01 08:13:04 +0200fabfianda(~fabfianda@37.183.255.57) (Read error: Connection reset by peer)
2021-07-01 08:13:12 +0200fabfianda(~fabfianda@37.183.255.57)
2021-07-01 08:14:04 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-01 08:14:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 08:14:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 08:20:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 08:20:33 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-07-01 08:24:50 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2021-07-01 08:25:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 08:28:24 +0200turlando(~turlando@user/turlando) (Ping timeout: 272 seconds)
2021-07-01 08:29:17 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
2021-07-01 08:29:30 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 08:31:54 +0200 <ephemient> feetwind: -prof -fprof-auto -fprof-cafs will add cost centers to (just about) all declarations, which should show up in exception stacktraces. not sure about per-module though
2021-07-01 08:32:04 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-01 08:34:13 +0200willbush(~user@47.183.200.14) (Remote host closed the connection)
2021-07-01 08:34:21 +0200 <ephemient> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/runtime_control.html#rts-flag--xc
2021-07-01 08:35:25 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 08:39:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 08:40:03 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-07-01 08:40:33 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 08:41:56 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 08:42:45 +0200v01d4lph4(~v01d4lph4@122.160.65.250)
2021-07-01 08:42:45 +0200v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-07-01 08:42:45 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-07-01 08:43:11 +0200chele(~chele@user/chele)
2021-07-01 08:45:25 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 08:46:22 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-07-01 08:47:41 +0200 <rune> If I include all the packages inside the "dist-newstyle" folder in my hie.yaml file, would this enable "Jump to definition" for functions defined in a dependencies?
2021-07-01 08:47:48 +0200fef(~thedawn@user/thedawn)
2021-07-01 08:47:59 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-01 08:48:09 +0200 <rune> Sorry, wrong channel
2021-07-01 08:48:16 +0200zangi(~zangi@103.154.230.230)
2021-07-01 08:49:10 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-07-01 08:49:39 +0200 <zangi> why doesn't listDirectory list "foo"?
2021-07-01 08:49:42 +0200 <zangi> `filter (== "foo") <$> listDirectory "." <* writeFile "foo" "something"`
2021-07-01 08:49:58 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Client Quit)
2021-07-01 08:50:00 +0200 <zangi> []
2021-07-01 08:50:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 08:50:48 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-01 08:51:46 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-01 08:52:22 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-07-01 08:53:58 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 272 seconds)
2021-07-01 08:53:59 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-01 08:54:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 08:54:26 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
2021-07-01 08:54:38 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-07-01 08:55:03 +0200thornAvery(~thorn@121.220.33.124)
2021-07-01 08:55:52 +0200 <thornAvery> howdy, i have a question about brick but im not sure if this is the place to ask it, would it be ok?
2021-07-01 08:56:14 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-01 08:56:16 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Client Quit)
2021-07-01 09:00:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:03:14 +0200fvr(uid503686@id-503686.highgate.irccloud.com)
2021-07-01 09:04:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-07-01 09:05:17 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-01 09:06:47 +0200 <sm[m]> go for it thornAvery
2021-07-01 09:10:03 +0200sm(~user@plaintextaccounting/sm) (Remote host closed the connection)
2021-07-01 09:10:15 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:12:48 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-07-01 09:13:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-07-01 09:14:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 09:14:52 +0200oxide(~lambda@user/oxide) (Ping timeout: 272 seconds)
2021-07-01 09:15:46 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-01 09:16:00 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-07-01 09:16:24 +0200oxide(~lambda@user/oxide)
2021-07-01 09:16:53 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-01 09:17:16 +0200 <[exa]> zangi: maybe the operation order is wrong?
2021-07-01 09:19:03 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-07-01 09:20:15 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:24:34 +0200acidjnk_new(~acidjnk@p200300d0c72b954061d05013652ae098.dip0.t-ipconnect.de)
2021-07-01 09:25:00 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-07-01 09:25:30 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:25:54 +0200alex3(~alex3@BSN-77-82-41.static.siol.net) (Ping timeout: 240 seconds)
2021-07-01 09:26:19 +0200 <tomsmeding> sm[m]: that's a bookmark
2021-07-01 09:26:28 +0200 <tomsmeding> that's great
2021-07-01 09:28:34 +0200turlando(~turlando@5.171.97.176)
2021-07-01 09:28:35 +0200turlando(~turlando@5.171.97.176) (Changing host)
2021-07-01 09:28:35 +0200turlando(~turlando@user/turlando)
2021-07-01 09:30:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 09:31:13 +0200cfricke(~cfricke@user/cfricke)
2021-07-01 09:31:58 +0200alex3(~alex3@BSN-77-82-41.static.siol.net)
2021-07-01 09:33:33 +0200turlando(~turlando@user/turlando) (Ping timeout: 268 seconds)
2021-07-01 09:33:54 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 09:35:36 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:36:16 +0200 <thornAvery> so im trying to visualise a cellular automata, im currently constructing a vBox full of hBoxs, where each hBox is a single character string that i apply attributes to. constructing this is taknig a large amount of my cpu usage, and i feel there should be a quicker way to map a [[MyType]] to the screen, where MyType is a simple `data MyType = A | B | C` which determines the attributes to apply
2021-07-01 09:37:34 +0200 <thornAvery> but reading the docs its not immediately obvious if i can do something like, render whole-line strings but with parts of it having different attributes
2021-07-01 09:44:39 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-07-01 09:45:15 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:46:01 +0200euandreh(~euandreh@2804:14c:33:9fe5:fe7c:a1fa:94dc:c42a) (Remote host closed the connection)
2021-07-01 09:46:25 +0200euandreh(~euandreh@2804:14c:33:9fe5:af42:e045:e98b:4388)
2021-07-01 09:49:48 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-07-01 09:49:51 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-01 09:50:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 09:54:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
2021-07-01 09:57:07 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-01 09:57:35 +0200 <zangi> [exa]: apparently it prints ["foo"] in do notation, weird
2021-07-01 09:58:03 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-07-01 10:00:15 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 10:01:12 +0200v01d4lph4(~v01d4lph4@122.160.65.250)
2021-07-01 10:01:12 +0200v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-07-01 10:01:12 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-07-01 10:01:13 +0200 <tomsmeding> zangi: https://hackage.haskell.org/package/base-4.15.0.0/docs/Control-Applicative.html#v:-60--42-
2021-07-01 10:01:28 +0200bor0(~boro@user/bor0)
2021-07-01 10:01:32 +0200 <tomsmeding> <* first executes the action of its left argument, then the action of its right argument, and finally returns the value from the left argument
2021-07-01 10:01:52 +0200 <tomsmeding> it's not like =<< where it really executes the actions from right to left
2021-07-01 10:01:56 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-07-01 10:03:39 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-01 10:04:34 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-01 10:05:07 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-07-01 10:06:08 +0200hendursaga(~weechat@user/hendursaga)
2021-07-01 10:08:55 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 10:09:31 +0200hendursa1(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-01 10:09:53 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 10:11:03 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-07-01 10:12:30 +0200MoC(~moc@user/moc)
2021-07-01 10:13:44 +0200 <zangi> tomsmeding: makes sense, thanks
2021-07-01 10:14:47 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-07-01 10:15:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 10:15:49 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-01 10:16:19 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:8d05:aaa6:8a87:6441)
2021-07-01 10:16:50 +0200hololeap(~hololeap@user/hololeap)
2021-07-01 10:17:28 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-01 10:17:52 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-01 10:18:10 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-07-01 10:18:10 +0200Lord_of_Life_Lord_of_Life
2021-07-01 10:20:07 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-07-01 10:22:31 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-01 10:27:09 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 10:28:17 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-07-01 10:30:00 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-07-01 10:30:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2021-07-01 10:32:46 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-01 10:34:30 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 10:34:53 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 10:38:41 +0200fendor(~fendor@77.119.196.177.wireless.dyn.drei.com)
2021-07-01 10:39:26 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-07-01 10:40:35 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 10:41:41 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-01 10:44:27 +0200tomferon[m](~tomferon@2001:470:69fc:105::268) (Quit: node-irc says goodbye)
2021-07-01 10:44:33 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a9c) (Quit: node-irc says goodbye)
2021-07-01 10:46:10 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 10:46:38 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-07-01 10:46:55 +0200cheater(~Username@user/cheater)
2021-07-01 10:48:10 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-01 10:49:24 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-07-01 10:53:02 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-01 10:55:26 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-07-01 10:55:30 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 11:04:29 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-07-01 11:09:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Remote host closed the connection)
2021-07-01 11:09:53 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 11:11:00 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-07-01 11:12:43 +0200fef(~thedawn@user/thedawn)
2021-07-01 11:14:08 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-07-01 11:14:15 +0200nanoc(~nanocoast@p200300e1273bf000ccc6df24f323b7c2.dip0.t-ipconnect.de)
2021-07-01 11:14:41 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-07-01 11:15:35 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 11:19:22 +0200cfricke(~cfricke@user/cfricke)
2021-07-01 11:23:03 +0200a6a45081-2b83(~aditya@223.235.222.167)
2021-07-01 11:24:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2021-07-01 11:25:34 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 11:26:47 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-01 11:26:52 +0200bor0(~boro@user/bor0) (Quit: Leaving)
2021-07-01 11:27:48 +0200ukari(~ukari@user/ukari)
2021-07-01 11:28:31 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
2021-07-01 11:32:00 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-01 11:33:23 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-07-01 11:35:02 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-07-01 11:40:02 +0200Pickchea(~private@user/pickchea)
2021-07-01 11:45:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 11:49:43 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-07-01 11:53:00 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 252 seconds)
2021-07-01 11:53:26 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
2021-07-01 11:53:56 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 258 seconds)
2021-07-01 11:58:04 +0200mikail(~mikail@90.212.77.3)
2021-07-01 12:02:52 +0200derelict(~derelict@user/derelict)
2021-07-01 12:05:56 +0200Torro(Torro@gateway/vpn/protonvpn/torro)
2021-07-01 12:08:29 +0200dunj3(~dunj3@p200300f61714a66193d8ecf822b563af.dip0.t-ipconnect.de)
2021-07-01 12:09:35 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 12:11:54 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-07-01 12:12:10 +0200azeem(~azeem@176.201.21.236)
2021-07-01 12:13:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Ping timeout: 240 seconds)
2021-07-01 12:14:19 +0200a6a45081-2b83(~aditya@223.235.222.167) (Remote host closed the connection)
2021-07-01 12:15:29 +0200ph88(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
2021-07-01 12:24:22 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 268 seconds)
2021-07-01 12:25:48 +0200azeem(~azeem@176.201.21.236)
2021-07-01 12:27:26 +0200neo(~neo3@cpe-292712.ip.primehome.com)
2021-07-01 12:28:49 +0200haliq(~haliq@128.106.240.245) (Quit: Client closed)
2021-07-01 12:30:15 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-07-01 12:37:51 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 265 seconds)
2021-07-01 12:40:47 +0200azeem(~azeem@176.201.21.236)
2021-07-01 12:42:18 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-07-01 12:43:10 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 12:43:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-01 12:44:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 12:45:06 +0200zangi(~zangi@103.154.230.230) (Ping timeout: 240 seconds)
2021-07-01 12:46:14 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 12:47:26 +0200zangi(~zangi@114.125.101.225)
2021-07-01 12:47:49 +0200chris_(~chris@81.96.113.213)
2021-07-01 12:48:00 +0200oxide(~lambda@user/oxide) (Ping timeout: 265 seconds)
2021-07-01 12:48:18 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-07-01 12:49:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-07-01 12:49:25 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 12:49:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 12:49:57 +0200nschoe(~quassel@178.251.84.79)
2021-07-01 12:49:59 +0200Schrostfutz(~Schrostfu@schettlerdck.tkn.tu-berlin.de)
2021-07-01 12:50:01 +0200zangi(~zangi@114.125.101.225) (Client Quit)
2021-07-01 12:50:08 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 12:53:21 +0200alex3(~alex3@BSN-77-82-41.static.siol.net) (Ping timeout: 258 seconds)
2021-07-01 12:54:36 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-01 12:54:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-07-01 12:55:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 12:55:54 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 272 seconds)
2021-07-01 12:57:27 +0200azeem(~azeem@176.201.21.236)
2021-07-01 13:00:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-07-01 13:00:32 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 13:00:39 +0200alex3(~alex3@BSN-77-82-41.static.siol.net)
2021-07-01 13:01:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 13:04:48 +0200kspalaiologos(~kspalaiol@user/kspalaiologos)
2021-07-01 13:05:24 +0200mikail(~mikail@90.212.77.3) (Ping timeout: 272 seconds)
2021-07-01 13:06:40 +0200AlexNoo_(~AlexNoo@94.233.241.144)
2021-07-01 13:08:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-07-01 13:10:13 +0200AlexNoo(~AlexNoo@178.34.161.92) (Ping timeout: 258 seconds)
2021-07-01 13:10:17 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-01 13:10:19 +0200AlexZenon(~alzenon@178.34.161.92) (Ping timeout: 268 seconds)
2021-07-01 13:10:22 +0200Alex_test(~al_test@178.34.161.92) (Ping timeout: 252 seconds)
2021-07-01 13:10:50 +0200ukari(~ukari@user/ukari)
2021-07-01 13:10:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 13:13:57 +0200mikail(~mikail@90.152.14.81)
2021-07-01 13:14:11 +0200AlexZenon(~alzenon@94.233.241.144)
2021-07-01 13:14:32 +0200Alex_test(~al_test@94.233.241.144)
2021-07-01 13:15:32 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Ping timeout: 256 seconds)
2021-07-01 13:23:06 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 240 seconds)
2021-07-01 13:24:18 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-07-01 13:25:38 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 13:26:15 +0200chris_(~chris@81.96.113.213)
2021-07-01 13:26:44 +0200azeem(~azeem@176.201.21.236)
2021-07-01 13:27:20 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-01 13:27:48 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-01 13:29:45 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-01 13:30:44 +0200chris_(~chris@81.96.113.213) (Ping timeout: 272 seconds)
2021-07-01 13:31:17 +0200chris_(~chris@81.96.113.213)
2021-07-01 13:31:20 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 13:32:22 +0200jippiedoe(~david@2a02-a44c-e14e-1-2787-f5de-e687-987e.fixed6.kpn.net)
2021-07-01 13:35:40 +0200chris_(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-07-01 13:37:55 +0200chronon(~chronon@user/chronon) ()
2021-07-01 13:39:10 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-07-01 13:40:26 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-07-01 13:44:29 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-07-01 13:48:28 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 272 seconds)
2021-07-01 13:49:06 +0200jespada(~jespada@90.254.247.46)
2021-07-01 13:55:08 +0200 <Profpatsch> What do people do with lots of nested IO (Validation err a) operations?
2021-07-01 13:55:56 +0200 <merijn> "It Depends (TM)"
2021-07-01 13:57:18 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 252 seconds)
2021-07-01 13:58:11 +0200 <Franciman> haskell is basically at a dead end
2021-07-01 13:58:24 +0200 <Franciman> it has to decide
2021-07-01 13:58:29 +0200 <Franciman> will it get dependent types?
2021-07-01 13:58:42 +0200 <Franciman> will it get better macros?
2021-07-01 13:58:48 +0200 <Franciman> what will it do?
2021-07-01 13:58:51 +0200 <Franciman> will it stay the same?
2021-07-01 13:59:17 +0200cheater(~Username@user/cheater) (Ping timeout: 258 seconds)
2021-07-01 13:59:35 +0200cheater(~Username@user/cheater)
2021-07-01 14:00:01 +0200 <Profpatsch> Franciman: ok
2021-07-01 14:00:17 +0200 <Profpatsch> merijn: on what?
2021-07-01 14:01:17 +0200 <hpc> the real problem with haskell is it can't implement ebpf in homomorphically encrypted iphone apps :D
2021-07-01 14:01:25 +0200Codaraxis__(~Codaraxis@193.32.126.157) (Remote host closed the connection)
2021-07-01 14:01:39 +0200 <merijn> Profpatsch: What's the errors? How do you wanna handle them? Why are they in IO? How do you wanna deal with complication from that? etc.
2021-07-01 14:01:44 +0200Codaraxis__(~Codaraxis@193.32.126.157)
2021-07-01 14:02:33 +0200azeem(~azeem@176.201.21.236)
2021-07-01 14:03:00 +0200 <Profpatsch> merijn: basically I have a bunch of IO functions that parse stuff into Validation
2021-07-01 14:03:15 +0200 <Profpatsch> e.g. readDir and then read every file in the dir
2021-07-01 14:03:23 +0200fef(~thedawn@user/thedawn)
2021-07-01 14:03:31 +0200magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au)
2021-07-01 14:03:57 +0200 <Profpatsch> Usually the way that works is if readDir fails, put that in the Failure and return, if it succeeds read every file and accumulate errors
2021-07-01 14:04:17 +0200 <magnuscake> Hello. I have the following; https://paste.tomsmeding.com/HCa1nNvS
2021-07-01 14:04:19 +0200 <Profpatsch> So there’s a bunch of nested (a -> IO (Validation (NonEmpty err) b)
2021-07-01 14:04:27 +0200 <magnuscake> This is just a general question, but for normal form, why can't I write
2021-07-01 14:04:37 +0200 <magnuscake> data Garden' = Gardner Gardneria'
2021-07-01 14:04:55 +0200 <merijn> I'd say you first use sequence to go from "[IO (Validation err a)]" to "IO [Validation err a]" and then you can fmap sequence into IO to go from '[Validation err a]' to 'Validation err [a]'
2021-07-01 14:05:07 +0200 <magnuscake> | Gardner Daisy'
2021-07-01 14:05:32 +0200 <hpc> magnuscake: the first thing in each section is the data constructor
2021-07-01 14:05:39 +0200 <hpc> it's easier to see with GADT syntax, you get something like
2021-07-01 14:05:59 +0200 <hpc> data Garden' where Gardenia' :: Gardener -> Garden'; Daisy' :: Gardener -> Garden'; ...
2021-07-01 14:06:18 +0200acidjnk_new(~acidjnk@p200300d0c72b954061d05013652ae098.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-07-01 14:06:22 +0200 <hpc> and those constructors have to be unique so you know which one it is later when you construct the value
2021-07-01 14:07:50 +0200 <magnuscake> Ah ok that makes sense thanks
2021-07-01 14:08:15 +0200 <Profpatsch> merijn: let’s see whether this play on traverse gets me anywhere:
2021-07-01 14:08:17 +0200 <Profpatsch> forValidate ::
2021-07-01 14:08:20 +0200 <Profpatsch> (Traversable t, Applicative ap, Semigroup err) =>
2021-07-01 14:08:22 +0200 <Profpatsch> t (ap (Validation err a)) ->
2021-07-01 14:08:22 +0200phma(phma@2001:5b0:211c:8948:6f8b:5fd0:dc14:21f2) (Read error: Connection reset by peer)
2021-07-01 14:08:24 +0200 <Profpatsch> (a -> ap (Validation err b)) ->
2021-07-01 14:08:26 +0200 <Profpatsch> ap (t (Validation err b))
2021-07-01 14:09:04 +0200AlexNoo_AlexNoo
2021-07-01 14:09:14 +0200phma(phma@2001:5b0:211f:2298:dd93:a388:d3e:b1b1)
2021-07-01 14:09:38 +0200lortabac(~lortabac@95.138.56.124)
2021-07-01 14:10:35 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-01 14:12:36 +0200acidjnk_new(~acidjnk@p200300d0c72b9504558b1d2f6b7134fe.dip0.t-ipconnect.de)
2021-07-01 14:19:28 +0200cfricke(~cfricke@user/cfricke)
2021-07-01 14:21:06 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 240 seconds)
2021-07-01 14:21:21 +0200azeem(~azeem@176.201.21.236)
2021-07-01 14:25:24 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-01 14:25:24 +0200Kaipi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-01 14:26:49 +0200Kaipi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
2021-07-01 14:26:59 +0200Kaipi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-01 14:27:01 +0200dwalker(~user@user/dwalker)
2021-07-01 14:29:53 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-07-01 14:30:44 +0200jumper149(~jumper149@80.240.31.34)
2021-07-01 14:31:06 +0200 <jumper149> Hmmmm, ghc is using 30GB RAM + 60GB swap. I think something might be wrong x)
2021-07-01 14:31:22 +0200 <jumper149> It fininshes compiling though
2021-07-01 14:31:40 +0200stevenxl(~stevenlei@68.235.43.101)
2021-07-01 14:34:33 +0200dwalker(~user@user/dwalker) (Quit: ERC Version 5.3 (IRC client for Emacs))
2021-07-01 14:35:30 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-01 14:37:55 +0200dwalker(~user@185.189.160.132)
2021-07-01 14:39:54 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 240 seconds)
2021-07-01 14:40:05 +0200 <merijn> jumper149: oof
2021-07-01 14:42:49 +0200 <jumper149> merijn: https://github.com/biocad/servant-openapi3/issues/8
2021-07-01 14:42:55 +0200 <jumper149> This seems to be related.
2021-07-01 14:42:58 +0200notzmv(~zmv@user/notzmv)
2021-07-01 14:43:16 +0200 <jumper149> I hope splitting up the API type will help
2021-07-01 14:45:03 +0200azeem(~azeem@176.201.21.236)
2021-07-01 14:45:59 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 14:46:23 +0200 <merijn> iirc Servant is rather type heavy, which certainly correlates with compile times
2021-07-01 14:46:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 14:50:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-01 14:50:50 +0200chris_(~chris@81.96.113.213)
2021-07-01 14:51:03 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 14:51:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Ping timeout: 256 seconds)
2021-07-01 14:51:41 +0200 <maerwald> the bigger problem with servant is my terminal size
2021-07-01 14:52:24 +0200jumper149chuckles
2021-07-01 14:53:43 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Quit: Leaving)
2021-07-01 14:53:57 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-01 14:54:08 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer)
2021-07-01 14:55:30 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-07-01 14:56:33 +0200alx741(~alx741@186.178.108.157)
2021-07-01 14:58:30 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (Quit: ZNC - http://znc.in)
2021-07-01 14:58:41 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
2021-07-01 15:01:12 +0200 <merijn> :)
2021-07-01 15:01:27 +0200 <ph88> how can i let stack download multiple GHC versions for my docker image ? so that it doesn't have to download again when image is executed ?
2021-07-01 15:08:04 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 15:10:12 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 258 seconds)
2021-07-01 15:10:35 +0200azeem(~azeem@176.201.21.236)
2021-07-01 15:12:50 +0200stevenxl(~stevenlei@68.235.43.101) (Ping timeout: 256 seconds)
2021-07-01 15:13:50 +0200stevenxl(~stevenlei@68.235.43.101)
2021-07-01 15:14:52 +0200 <fendor> ph88, I think you can use something like: stack setup --resolver=lts-18.0, e
2021-07-01 15:15:11 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 268 seconds)
2021-07-01 15:15:49 +0200 <ph88> thanks !
2021-07-01 15:16:28 +0200azeem(~azeem@176.201.21.236)
2021-07-01 15:17:30 +0200 <merijn> Ah better question is: Why are you making docker images with compilers in it?
2021-07-01 15:18:27 +0200robbert-vdh(~robbert@robbertvanderhelm.nl) (WeeChat 3.2)
2021-07-01 15:20:03 +0200kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2021-07-01 15:21:03 +0200 <fendor> development container!
2021-07-01 15:23:09 +0200magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au) (Ping timeout: 265 seconds)
2021-07-01 15:27:02 +0200qrpnxz(~qrpnxz@user/qrpnxz) (Ping timeout: 272 seconds)
2021-07-01 15:28:45 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 268 seconds)
2021-07-01 15:29:50 +0200azeem(~azeem@176.201.21.236)
2021-07-01 15:33:50 +0200favonia(~favonia@user/favonia)
2021-07-01 15:38:42 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 240 seconds)
2021-07-01 15:38:55 +0200dwalker(~user@185.189.160.132) (Quit: ERC Version 5.3 (IRC client for Emacs))
2021-07-01 15:39:16 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 15:39:29 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 15:39:52 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-01 15:40:06 +0200chris_(~chris@81.96.113.213)
2021-07-01 15:40:45 +0200mnrmnaughi
2021-07-01 15:40:55 +0200imnrmnaugh
2021-07-01 15:41:11 +0200qrpnxz(~qrpnxz@user/qrpnxz)
2021-07-01 15:41:15 +0200mnrmnaughwhy
2021-07-01 15:41:30 +0200whyawk
2021-07-01 15:41:52 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 15:42:15 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-01 15:42:27 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 15:42:55 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 15:45:00 +0200chris_(~chris@81.96.113.213) (Ping timeout: 272 seconds)
2021-07-01 15:45:29 +0200azeem(~azeem@176.201.21.236)
2021-07-01 15:48:18 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2021-07-01 15:49:06 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-07-01 15:50:04 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 272 seconds)
2021-07-01 15:53:34 +0200azeem(~azeem@176.201.21.236)
2021-07-01 15:57:11 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-01 15:57:16 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer)
2021-07-01 15:58:44 +0200acidjnk_new(~acidjnk@p200300d0c72b9504558b1d2f6b7134fe.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-07-01 15:59:29 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-07-01 16:00:18 +0200Feuermagier_(~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a) (Ping timeout: 240 seconds)
2021-07-01 16:00:23 +0200fvr(uid503686@id-503686.highgate.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-01 16:01:19 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-01 16:02:17 +0200acidjnk_new(~acidjnk@p200300d0c72b9504558b1d2f6b7134fe.dip0.t-ipconnect.de)
2021-07-01 16:04:15 +0200zebrag(~chris@user/zebrag)
2021-07-01 16:05:55 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 16:07:10 +0200fizbin_(~fizbin@93.sub-174-198-203.myvzw.com)
2021-07-01 16:07:36 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-07-01 16:08:13 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 268 seconds)
2021-07-01 16:08:22 +0200acidjnk_new(~acidjnk@p200300d0c72b9504558b1d2f6b7134fe.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-07-01 16:08:54 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 16:09:56 +0200Deide(~Deide@wire.desu.ga)
2021-07-01 16:09:56 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-07-01 16:09:56 +0200Deide(~Deide@user/deide)
2021-07-01 16:10:02 +0200fendor(~fendor@77.119.196.177.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-01 16:12:44 +0200fendor(~fendor@77.119.218.107.wireless.dyn.drei.com)
2021-07-01 16:14:30 +0200 <Profpatsch> super helpful for validation:
2021-07-01 16:14:32 +0200 <Profpatsch> traverseFold :: (Applicative ap, Traversable t, Monoid m) => (a -> ap m) -> t a -> ap m
2021-07-01 16:14:35 +0200 <Profpatsch> traverseFold f xs = fold <$> traverse f xs
2021-07-01 16:15:02 +0200TranquilEcho(~grom@user/tranquilecho)
2021-07-01 16:15:27 +0200 <Profpatsch> (a -> IO (Validation err b)) -> IO a -> IO (Validation err b)
2021-07-01 16:15:54 +0200 <Taneb> Profpatsch: I think that can be rewritten to just have a Foldable constraint on t
2021-07-01 16:16:24 +0200 <Profpatsch> Taneb: how do you do traverse then?
2021-07-01 16:16:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 16:16:51 +0200 <Taneb> Profpatsch: you don't need it, a -> Ap ap m has the right monoid instance to just use foldmap
2021-07-01 16:17:42 +0200 <Profpatsch> Taneb: what does the implementation look like?
2021-07-01 16:17:44 +0200 <Taneb> :t \f -> getAp . foldMap (Ap . f)
2021-07-01 16:17:45 +0200 <lambdabot> forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1
2021-07-01 16:18:30 +0200 <Taneb> :: (Foldable t, Applicative f, Monoid m) => (a -> f m) -> t a -> f m
2021-07-01 16:18:51 +0200 <Taneb> Ap is in Data.Monoid although I'm not quite convinced that lambdabot picked up the right Ap there
2021-07-01 16:20:18 +0200 <Profpatsch> Taneb: but can you do the same for Semigroup?
2021-07-01 16:20:36 +0200 <Profpatsch> I don’t think you can
2021-07-01 16:20:41 +0200 <Taneb> Profpatsch: with Foldable1 from semigroupoids I guess
2021-07-01 16:20:47 +0200 <Taneb> But I don't think you can your way either
2021-07-01 16:20:51 +0200 <Profpatsch> But that doesn’t use APplicative
2021-07-01 16:20:59 +0200 <Profpatsch> But the class that just has <*>
2021-07-01 16:21:01 +0200 <Profpatsch> not pure
2021-07-01 16:21:16 +0200 <Profpatsch> Apply
2021-07-01 16:22:52 +0200 <Profpatsch> But it’s interesting that you can weaken one but not the other in the ecosystem
2021-07-01 16:23:00 +0200 <Taneb> ?
2021-07-01 16:23:14 +0200 <Profpatsch> Doesn’t work for Semigroup
2021-07-01 16:23:30 +0200 <Profpatsch> Even though it could, but the class tree is missing Apply
2021-07-01 16:24:29 +0200 <Taneb> :t \f -> foldr1 (liftA2 (<>) . f)
2021-07-01 16:24:30 +0200 <lambdabot> (Foldable t, Applicative f, Semigroup c) => (f c -> f c) -> t (f c) -> f c
2021-07-01 16:24:39 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-01 16:24:46 +0200 <Taneb> That's not quite right :(
2021-07-01 16:26:10 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 272 seconds)
2021-07-01 16:28:24 +0200 <Profpatsch> Taneb: I wonder if the actual code that is run with the getAp method is different than with the traverse method
2021-07-01 16:28:30 +0200 <Profpatsch> like there is a foldMap and a foldMap'
2021-07-01 16:28:49 +0200 <Profpatsch> But there is no traverse'
2021-07-01 16:29:09 +0200bollu(~bollu@139.59.46.74) (Ping timeout: 272 seconds)
2021-07-01 16:29:10 +0200 <Profpatsch> which kinda makes sense I guess
2021-07-01 16:29:24 +0200bollu(~bollu@139.59.46.74)
2021-07-01 16:29:33 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-07-01 16:29:51 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-01 16:29:56 +0200pja(~pja@dsl-217-155-153-10.zen.co.uk)
2021-07-01 16:30:26 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 16:31:14 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 272 seconds)
2021-07-01 16:34:15 +0200azeem(~azeem@176.201.21.236)
2021-07-01 16:40:33 +0200 <Taneb> godbolt gives different assembly for them
2021-07-01 16:41:14 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 256 seconds)
2021-07-01 16:41:46 +0200azeem(~azeem@176.201.21.236)
2021-07-01 16:47:19 +0200jippiedoe(~david@2a02-a44c-e14e-1-2787-f5de-e687-987e.fixed6.kpn.net) (Remote host closed the connection)
2021-07-01 16:48:03 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-07-01 16:48:36 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 16:49:39 +0200fizbin_(~fizbin@93.sub-174-198-203.myvzw.com) (Read error: Connection reset by peer)
2021-07-01 16:49:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 16:49:58 +0200jippiedoe(~david@2a02-a44c-e14e-1-2787-f5de-e687-987e.fixed6.kpn.net)
2021-07-01 16:51:24 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-07-01 16:51:43 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-07-01 16:51:48 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 16:52:24 +0200finsternis(~X@23.226.237.192)
2021-07-01 16:53:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Ping timeout: 256 seconds)
2021-07-01 16:54:38 +0200usera(~usera@151.45.149.246)
2021-07-01 16:59:20 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-01 16:59:41 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap)
2021-07-01 16:59:44 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-07-01 16:59:44 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-01 17:00:15 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-07-01 17:03:42 +0200ph88(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Quit: Leaving)
2021-07-01 17:05:12 +0200usera(~usera@151.45.149.246) (Quit: Client closed)
2021-07-01 17:05:46 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 252 seconds)
2021-07-01 17:07:03 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-07-01 17:07:40 +0200cuz(~user@38.140.58.234)
2021-07-01 17:08:25 +0200aravk_aravk
2021-07-01 17:10:47 +0200 <tomsmeding> maerwald: I saw somebody recommend the Haskell Platform to a mac user asking how to get started with haskell; I was on the brink of shouting "ghcup" but it's good I had a look at the official webpage, because I see it actually lists ghcup already :)
2021-07-01 17:11:05 +0200 <tomsmeding> It does give a separate link for installing stack, but ghcup can do that now too, right?
2021-07-01 17:11:34 +0200 <maerwald> yeah
2021-07-01 17:11:38 +0200azeem(~azeem@176.201.21.236)
2021-07-01 17:12:38 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-01 17:12:51 +0200juhp(~juhp@128.106.188.66)
2021-07-01 17:13:46 +0200myShoggoth(~myShoggot@75.164.51.64)
2021-07-01 17:13:49 +0200thiagomm(~thiagomm@2804:14c:de88:87a9::1000)
2021-07-01 17:14:05 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 256 seconds)
2021-07-01 17:14:23 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 17:14:42 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 240 seconds)
2021-07-01 17:15:20 +0200romes2(~romes2@44.190.189.46.rev.vodafone.pt)
2021-07-01 17:15:26 +0200 <romes2> hi!
2021-07-01 17:15:54 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 240 seconds)
2021-07-01 17:15:55 +0200 <boxscape> hi
2021-07-01 17:15:58 +0200thiagomm(~thiagomm@2804:14c:de88:87a9::1000) (Client Quit)
2021-07-01 17:16:01 +0200 <Vq> Hi romes
2021-07-01 17:16:18 +0200TranquilEcho(~grom@user/tranquilecho) (Ping timeout: 240 seconds)
2021-07-01 17:16:23 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 17:17:01 +0200dunkeln(~dunkeln@188.70.10.165)
2021-07-01 17:17:25 +0200TranquilEcho(~grom@user/tranquilecho)
2021-07-01 17:18:27 +0200nanoc(~nanocoast@p200300e1273bf000ccc6df24f323b7c2.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-07-01 17:18:42 +0200mei(~mei@user/mei)
2021-07-01 17:19:19 +0200 <romes2> I have a question, how would I check if the value of a Monadic computation is empty ?
2021-07-01 17:19:38 +0200cuz(~user@38.140.58.234) (Remote host closed the connection)
2021-07-01 17:19:48 +0200 <romes2> x = Nothing >> return (Just 1) is Nothing, and I could wrap it in a "case", but if it wasn't the Maybe monad, but something else that supported "empty"
2021-07-01 17:20:40 +0200cuz(~user@38.140.58.234)
2021-07-01 17:20:55 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 246 seconds)
2021-07-01 17:21:18 +0200 <romes2> oh I think I figured it out... when I phrased it as "conditional" when writing another message I got an idea
2021-07-01 17:22:19 +0200 <romes2> thank you everyone hahaha (if anyone wants to know this remembered me of a function called "ifte" in the LogicT backtracking library
2021-07-01 17:22:27 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-07-01 17:22:36 +0200Guest1870(~Guest18@27.147.234.193)
2021-07-01 17:22:45 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 17:23:10 +0200 <merijn> tomsmeding: on macos you might as well install the ghc bindists, imo
2021-07-01 17:23:52 +0200 <Guest1870> why is `take 10 [13, 26..]` better than `[13, 26..13*10]`?
2021-07-01 17:24:08 +0200 <merijn> Who says it is?
2021-07-01 17:24:23 +0200 <Guest1870> http://learnyouahaskell.com/starting-out#ready-set-go
2021-07-01 17:25:21 +0200 <merijn> I don't see where it says that is better?
2021-07-01 17:25:39 +0200 <boxscape> Guest1870: to me it's a bit more immediately obvious what `take 10 [13, 26..]` means but I'd say both are fine
2021-07-01 17:25:41 +0200chris_(~chris@81.96.113.213)
2021-07-01 17:25:46 +0200 <boxscape> merijn: it says "Sure, you could do [13,26..24*13]. But there's a better way: take 24 [13,26..]"
2021-07-01 17:26:02 +0200 <geekosaur> might be because it
2021-07-01 17:26:04 +0200 <merijn> I'd say the main advantage is where you don't know if you will need 10 items ahead of time
2021-07-01 17:26:10 +0200 <geekosaur> 's clearer what you intend
2021-07-01 17:26:14 +0200 <Guest1870> better how? syntax wise?
2021-07-01 17:26:22 +0200 <merijn> Like, suppose you wanna assign unique indices to a container of elements
2021-07-01 17:26:36 +0200 <merijn> With the infinite list you don't have to know the size ahead of time
2021-07-01 17:27:59 +0200 <dolio> I'd have to think longer about what the actual upper bound should be, at least.
2021-07-01 17:29:13 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 17:29:13 +0200 <dolio> I'm never confident about that sort of off-by-one stuff.
2021-07-01 17:30:50 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 17:31:26 +0200Guest1870(~Guest18@27.147.234.193) (Quit: Client closed)
2021-07-01 17:31:27 +0200chris_(~chris@81.96.113.213)
2021-07-01 17:31:32 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-07-01 17:32:23 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 17:32:23 +0200cuz(~user@38.140.58.234) (Read error: Connection reset by peer)
2021-07-01 17:32:35 +0200chris_(~chris@81.96.113.213)
2021-07-01 17:32:35 +0200awk(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Read error: Connection reset by peer)
2021-07-01 17:32:39 +0200cuz(~user@38.140.58.234)
2021-07-01 17:33:11 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 17:33:23 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2021-07-01 17:34:00 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-07-01 17:36:11 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 17:37:20 +0200Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 256 seconds)
2021-07-01 17:37:33 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 17:42:23 +0200dunkeln(~dunkeln@188.70.10.165) (Ping timeout: 258 seconds)
2021-07-01 17:42:43 +0200lortabac(~lortabac@95.138.56.124) (Quit: WeeChat 2.8)
2021-07-01 17:44:05 +0200dunkeln(~dunkeln@188.70.10.165)
2021-07-01 17:44:29 +0200 <nshepperd> which is better depends what the list is for
2021-07-01 17:46:52 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
2021-07-01 17:48:19 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-07-01 17:50:33 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 17:53:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-01 17:53:09 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 17:56:31 +0200tenniscp25(~textual@134.196.209.118)
2021-07-01 17:56:46 +0200Torro(Torro@gateway/vpn/protonvpn/torro) (Quit: leaving)
2021-07-01 17:57:39 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-07-01 17:59:56 +0200eight(~eight@user/eight)
2021-07-01 18:00:41 +0200 <monochrom> Both are worse.
2021-07-01 18:01:25 +0200 <monochrom> One of them doesn't make clear what length to expect. The other doesn't make clear what end to expect.
2021-07-01 18:01:33 +0200 <monochrom> The only way to win is not to play.
2021-07-01 18:02:39 +0200berberman_(~berberman@user/berberman)
2021-07-01 18:02:43 +0200 <monochrom> perhaps s/make clear/spell out/
2021-07-01 18:02:50 +0200berberman(~berberman@user/berberman) (Ping timeout: 256 seconds)
2021-07-01 18:02:52 +0200 <dolio> Well, if the problem specification has the length of the list, which it does in the example, then it's easier to use the one that makes the length obvious.
2021-07-01 18:02:56 +0200tenniscp25(~textual@134.196.209.118) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-01 18:03:19 +0200 <monochrom> Ah, yes I agree. :)
2021-07-01 18:03:25 +0200tenniscp25(~textual@134.196.209.118)
2021-07-01 18:04:21 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 18:04:41 +0200 <nshepperd> is that a koan? "there is no better, only worse"
2021-07-01 18:04:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 18:04:50 +0200 <monochrom> Oh hey I have a cunning plan! take 10 [13, 26..13*10]
2021-07-01 18:06:20 +0200 <monochrom> nshepperd, generally I think up pessimism jokes. For example, every silver lining has tarnish. >:)
2021-07-01 18:07:24 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-01 18:09:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e) (Ping timeout: 240 seconds)
2021-07-01 18:13:46 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-07-01 18:14:52 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-01 18:16:13 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-01 18:16:42 +0200xff0x(~xff0x@2001:1a81:5237:1000:d9df:afaf:2f58:a5ba) (Ping timeout: 240 seconds)
2021-07-01 18:16:45 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-07-01 18:18:49 +0200xff0x(~xff0x@141.98.255.146)
2021-07-01 18:19:30 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 240 seconds)
2021-07-01 18:22:46 +0200econo(uid147250@user/econo)
2021-07-01 18:24:15 +0200romes2(~romes2@44.190.189.46.rev.vodafone.pt) (Quit: Client closed)
2021-07-01 18:25:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 18:25:07 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 268 seconds)
2021-07-01 18:26:21 +0200qbt(~edun@user/edun) (Ping timeout: 268 seconds)
2021-07-01 18:26:31 +0200tenniscp25(~textual@134.196.209.118) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-01 18:27:41 +0200azeem(~azeem@176.201.21.236)
2021-07-01 18:27:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:dc49:b28b:5485:3e7e)
2021-07-01 18:28:42 +0200fef(~thedawn@user/thedawn)
2021-07-01 18:28:55 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 18:29:37 +0200chris_(~chris@81.96.113.213)
2021-07-01 18:30:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-01 18:32:57 +0200 <DigitalKiwi> not every thorn has a rose
2021-07-01 18:33:29 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
2021-07-01 18:33:54 +0200chris_(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-07-01 18:34:30 +0200chris_(~chris@81.96.113.213)
2021-07-01 18:34:57 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2021-07-01 18:35:08 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-01 18:37:12 +0200dunkeln(~dunkeln@188.70.10.165) (Ping timeout: 258 seconds)
2021-07-01 18:38:54 +0200chris_(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-07-01 18:39:14 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-07-01 18:40:06 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-07-01 18:40:26 +0200 <monochrom> Even better: roses wither, thorns are forever >:)
2021-07-01 18:41:12 +0200 <qrpnxz> thorns let roses live longer
2021-07-01 18:44:03 +0200 <DigitalKiwi> oh here comes the go programmer telling us "thorns are good, actually"
2021-07-01 18:44:33 +0200chris_(~chris@81.96.113.213)
2021-07-01 18:47:20 +0200dunkeln(~dunkeln@188.70.10.165)
2021-07-01 18:49:47 +0200azeem(~azeem@176.201.21.236) (Ping timeout: 268 seconds)
2021-07-01 18:49:50 +0200jess(~jess@libera/staff/jess)
2021-07-01 18:50:22 +0200Guest9(~Guest9@103.86.19.221)
2021-07-01 18:51:49 +0200azeem(~azeem@176.201.21.236)
2021-07-01 18:53:53 +0200xff0x(~xff0x@141.98.255.146) (Ping timeout: 265 seconds)
2021-07-01 18:54:43 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 18:55:15 +0200xff0x(~xff0x@2001:1a81:5237:1000:d9df:afaf:2f58:a5ba)
2021-07-01 18:55:24 +0200azeem(~azeem@176.201.21.236) (Read error: Connection reset by peer)
2021-07-01 18:56:19 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-01 19:00:04 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-07-01 19:02:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 19:04:02 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-07-01 19:05:10 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 256 seconds)
2021-07-01 19:06:11 +0200azeem(~azeem@176.201.21.236)
2021-07-01 19:07:31 +0200pavonia(~user@user/siracusa)
2021-07-01 19:08:50 +0200azeem(~azeem@176.201.21.236) (Read error: Connection reset by peer)
2021-07-01 19:10:10 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-01 19:11:06 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2021-07-01 19:11:52 +0200cheater(~Username@user/cheater)
2021-07-01 19:14:11 +0200mikail_(~mikail@213.205.242.43)
2021-07-01 19:14:46 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 258 seconds)
2021-07-01 19:15:28 +0200nixtamalize(~nixtamali@117.222.65.230)
2021-07-01 19:15:58 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-07-01 19:16:42 +0200mikail(~mikail@90.152.14.81) (Ping timeout: 240 seconds)
2021-07-01 19:19:30 +0200ringo_(~ringo@157.230.117.128)
2021-07-01 19:20:18 +0200ph88(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
2021-07-01 19:22:36 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 19:23:18 +0200jippiedoe(~david@2a02-a44c-e14e-1-2787-f5de-e687-987e.fixed6.kpn.net) (Ping timeout: 256 seconds)
2021-07-01 19:24:10 +0200elf_fortrez(~elf_fortr@adsl-72-50-4-120.prtc.net)
2021-07-01 19:30:17 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 19:31:54 +0200mikail_(~mikail@213.205.242.43) (Ping timeout: 240 seconds)
2021-07-01 19:32:24 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
2021-07-01 19:33:00 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 19:33:41 +0200 <qrpnxz> xd
2021-07-01 19:35:07 +0200alphabeta(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-07-01 19:36:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-01 19:36:21 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
2021-07-01 19:37:19 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 19:37:58 +0200anviking(~anviking@90-229-193-56-no14.tbcn.telia.com)
2021-07-01 19:38:12 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 268 seconds)
2021-07-01 19:39:00 +0200anviking(~anviking@90-229-193-56-no14.tbcn.telia.com) (Client Quit)
2021-07-01 19:39:10 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 256 seconds)
2021-07-01 19:39:15 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 19:41:00 +0200azeem(~azeem@176.201.21.236)
2021-07-01 19:44:48 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 19:45:30 +0200chris_(~chris@81.96.113.213)
2021-07-01 19:45:30 +0200 <qrpnxz> thorns keep side-effects out of functions in haskell
2021-07-01 19:45:49 +0200fendor(~fendor@77.119.218.107.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-07-01 19:47:32 +0200azeem(~azeem@176.201.21.236) (Read error: Connection reset by peer)
2021-07-01 19:48:04 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-01 19:48:19 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 19:49:07 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 19:49:19 +0200chris_(~chris@81.96.113.213)
2021-07-01 19:49:22 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-07-01 19:52:11 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-01 19:52:18 +0200wickedjargon(~wickedjar@cpeac202ebc90c3-cmac202ebc90c0.cpe.net.fido.ca)
2021-07-01 19:52:58 +0200fabfianda(~fabfianda@37.183.255.57) (Ping timeout: 252 seconds)
2021-07-01 19:53:21 +0200fabfianda(~fabfianda@37.183.255.57)
2021-07-01 19:54:08 +0200hammock(~Hammock@2600:1700:19a1:3330::625)
2021-07-01 19:54:32 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 19:55:02 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-07-01 19:55:31 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-01 19:55:48 +0200Schrostfutz(~Schrostfu@schettlerdck.tkn.tu-berlin.de) (Ping timeout: 272 seconds)
2021-07-01 19:57:41 +0200chris_(~chris@81.96.113.213)
2021-07-01 19:59:28 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 268 seconds)
2021-07-01 19:59:53 +0200elf_fortrez(~elf_fortr@adsl-72-50-4-120.prtc.net) (Quit: Client closed)
2021-07-01 20:00:04 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-01 20:00:16 +0200Iryon(~Iryon@2a02:a31a:a045:3500:90e2:686f:e863:4359)
2021-07-01 20:01:11 +0200cheater(~Username@user/cheater) (Quit: (BitchX) I see your BitchX is as big as mine!)
2021-07-01 20:01:54 +0200 <dminuoso> accursedUnutterablePerformIO is at my side, I have all the side effects.
2021-07-01 20:02:43 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d)
2021-07-01 20:03:25 +0200 <davean> dminuoso: just forge an MD5 hash - that way it can be SafeHaskell also
2021-07-01 20:04:02 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-01 20:04:20 +0200cheater(~Username@user/cheater)
2021-07-01 20:04:43 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d) (Client Quit)
2021-07-01 20:04:59 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d)
2021-07-01 20:05:41 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d) (Client Quit)
2021-07-01 20:05:57 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d)
2021-07-01 20:06:21 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
2021-07-01 20:07:04 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 20:07:51 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
2021-07-01 20:08:02 +0200nixtamalize(~nixtamali@117.222.65.230) ()
2021-07-01 20:08:11 +0200michalz(~michalz@185.246.204.105) (Remote host closed the connection)
2021-07-01 20:08:48 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 20:09:52 +0200Pickchea(~private@user/pickchea)
2021-07-01 20:10:04 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-01 20:10:51 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
2021-07-01 20:11:18 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-07-01 20:11:20 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-01 20:11:44 +0200cheater(~Username@user/cheater)
2021-07-01 20:15:59 +0200hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-01 20:16:18 +0200hiruji(~hiruji@user/hiruji)
2021-07-01 20:16:23 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: node-irc says goodbye)
2021-07-01 20:20:47 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-01 20:21:26 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-01 20:21:46 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2021-07-01 20:22:58 +0200Guest9(~Guest9@103.86.19.221) (Quit: Connection closed)
2021-07-01 20:25:47 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 20:27:28 +0200dunkeln(~dunkeln@188.70.10.165) (Ping timeout: 272 seconds)
2021-07-01 20:27:35 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-07-01 20:28:03 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 20:31:11 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 20:32:29 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-07-01 20:32:48 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-07-01 20:34:13 +0200mikail__(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Quit: Leaving)
2021-07-01 20:34:52 +0200 <chris_> trying to convert a division operation to a fractional
2021-07-01 20:36:00 +0200 <chris_> sorry
2021-07-01 20:36:04 +0200 <chris_> to a Rational*
2021-07-01 20:37:56 +0200MoC(~moc@user/moc)
2021-07-01 20:39:51 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
2021-07-01 20:41:23 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 20:44:48 +0200learner-monad(~ehanneken@user/learner-monad)
2021-07-01 20:47:53 +0200octeep[m]1(~octeepmoc@2001:470:69fc:105::695e)
2021-07-01 20:47:55 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 258 seconds)
2021-07-01 20:48:32 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 20:49:24 +0200 <monochrom> That's pretty vague.
2021-07-01 20:50:20 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-07-01 20:50:44 +0200 <chris_> i did 1/(toRational n-1)
2021-07-01 20:51:26 +0200 <monochrom> What is the type of n?
2021-07-01 20:51:36 +0200 <monochrom> Are you missing some parentheses?
2021-07-01 20:51:42 +0200 <chris_> ahh type of n is Int
2021-07-01 20:51:59 +0200 <davean> why not use %?
2021-07-01 20:52:58 +0200 <chris_> what's % do?
2021-07-01 20:53:04 +0200 <chris_> that does*
2021-07-01 20:53:17 +0200 <chris_> % 4/2
2021-07-01 20:53:18 +0200 <yahb> chris_: 2.0
2021-07-01 20:53:26 +0200 <chris_> % 4%2
2021-07-01 20:53:27 +0200 <yahb> chris_: 2 % 1
2021-07-01 20:54:24 +0200jolly(~jolly@208.180.97.158) (Quit: Connection closed)
2021-07-01 20:54:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 20:54:33 +0200 <monochrom> But if n::Int, then 1%n gives Ratio Int, not Rational (Ratio Integer)
2021-07-01 20:55:06 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
2021-07-01 20:55:23 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 20:56:27 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 21:00:24 +0200wickedjargon(~wickedjar@cpeac202ebc90c3-cmac202ebc90c0.cpe.net.fido.ca) (Ping timeout: 272 seconds)
2021-07-01 21:00:59 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-07-01 21:01:11 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-01 21:01:40 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-01 21:02:11 +0200 <chris_> doing toRational on the (n-1) makes it run
2021-07-01 21:02:15 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-07-01 21:03:32 +0200dunkeln_(~dunkeln@188.70.10.165)
2021-07-01 21:05:31 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-01 21:06:18 +0200xff0x(~xff0x@2001:1a81:5237:1000:d9df:afaf:2f58:a5ba) (Ping timeout: 240 seconds)
2021-07-01 21:07:29 +0200xff0x(~xff0x@2001:1a81:5237:1000:bd6:e736:a4f:c278)
2021-07-01 21:08:44 +0200dunkeln_(~dunkeln@188.70.10.165) (Ping timeout: 265 seconds)
2021-07-01 21:09:13 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-07-01 21:10:11 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: Well, off to Libera.)
2021-07-01 21:10:32 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-07-01 21:11:03 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 21:13:54 +0200 <davean> chris_: % is ~ a constructor for Ratio
2021-07-01 21:14:18 +0200 <davean> Rational is Ratio on Integer
2021-07-01 21:21:37 +0200wickedjargon(~wickedjar@cpeac202ebc90c3-cmac202ebc90c0.cpe.net.fido.ca)
2021-07-01 21:23:42 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-07-01 21:25:15 +0200 <chris_> ok thx davean
2021-07-01 21:26:05 +0200 <chris_> seems that haskell is very explicit with its numeric types compared to other languages?
2021-07-01 21:28:02 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-01 21:28:36 +0200 <davean> yes
2021-07-01 21:28:51 +0200 <davean> It tries to not fuck up the math without making it explicite
2021-07-01 21:29:21 +0200 <maerwald> Is it? I usually have no idea what's going on and insert fromIneger/fromIntegral/justMakeThisShitCompile
2021-07-01 21:29:29 +0200blackfield(~blackfiel@85.255.4.218) ()
2021-07-01 21:29:38 +0200 <davean> I certainly never approach it like that
2021-07-01 21:29:45 +0200 <maerwald> :D
2021-07-01 21:30:05 +0200 <davean> https://hackage.haskell.org/package/int-cast-0.2.0.0/docs/Data-IntCast.html is much nicer for example if you do need to convert
2021-07-01 21:30:29 +0200 <maerwald> I'm exaggerating, but our numerical stuff isn't textbook engineering
2021-07-01 21:30:40 +0200 <davean> Our numerical tower isn't
2021-07-01 21:30:43 +0200 <davean> our numerical tower sucks
2021-07-01 21:30:48 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 272 seconds)
2021-07-01 21:30:48 +0200 <davean> I tihnk we have good conversions though
2021-07-01 21:30:52 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-01 21:30:59 +0200 <davean> we just lack laws inside a type sadly because we split operations up poorly
2021-07-01 21:31:07 +0200 <davean> Its seriously fucked up mind you
2021-07-01 21:31:13 +0200 <davean> I've had SERIOUS issues due to that lack of laws
2021-07-01 21:31:14 +0200lavaman(~lavaman@98.38.249.169)
2021-07-01 21:31:16 +0200cloudy(~user@2600:8807:c207:f00:d412:4cce:d9f1:ba0)
2021-07-01 21:31:52 +0200 <davean> We basicly can't abstract over numeric types because of it
2021-07-01 21:32:30 +0200 <dolio> That seems accurate to reality.
2021-07-01 21:32:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-01 21:34:26 +0200 <davean> Its really frustrating, but its also complicated. Its not clear what the right factoring would be
2021-07-01 21:34:31 +0200jneira_(~jneira_@217.red-81-39-172.dynamicip.rima-tde.net) (Quit: Ping timeout (120 seconds))
2021-07-01 21:38:16 +0200 <chris_> can the same function have different pattern matching WITH different params lengths
2021-07-01 21:38:42 +0200 <chris_> like: initially call this func with 1 arg, then call with 2 afterwards
2021-07-01 21:39:02 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-01 21:39:08 +0200 <davean> no, a function is exactly one thing, but you can make something that LOOKS like that with type classes.
2021-07-01 21:39:18 +0200 <davean> infact, Haskell sorta only has one argument functions
2021-07-01 21:39:50 +0200tomsmeding(~tomsmedin@2a03:b0c0:0:1010::767:3001) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-01 21:39:59 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-07-01 21:40:06 +0200 <davean> You can make something difficult to tell appart from a variable argument function with type classes
2021-07-01 21:40:09 +0200tomsmeding(~tomsmedin@tomsmeding.com)
2021-07-01 21:40:15 +0200 <chris_> i'm facing a dilemma with recursive incrementation
2021-07-01 21:40:22 +0200 <chris_> i want to increment by argument n
2021-07-01 21:40:47 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 21:41:44 +0200 <davean> ok, so?
2021-07-01 21:41:46 +0200 <Rembane> What's the problem?
2021-07-01 21:42:05 +0200 <davean> we all stare at you wondering what the problem is, and expecting you're having an x-y problem
2021-07-01 21:42:45 +0200 <chris_> it's probably more simple than i realize i'll just see if i can solve it first
2021-07-01 21:42:45 +0200 <Rembane> davean: If this channel had a motivating poster, that would be the text of it.
2021-07-01 21:42:58 +0200Rembanehands chris_ a rubber duck
2021-07-01 21:43:11 +0200 <davean> chris_: Try focusing on what you're actually trying to do, not how you're trying to do it
2021-07-01 21:45:11 +0200abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
2021-07-01 21:50:38 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 256 seconds)
2021-07-01 21:51:13 +0200 <dminuoso> 21:30:48 davean | I tihnk we have good conversions though
2021-07-01 21:51:15 +0200 <dminuoso> We dont.
2021-07-01 21:52:00 +0200 <Rembane> dminuoso: Give us the rant!
2021-07-01 21:52:07 +0200 <dminuoso> I can hold back I think.
2021-07-01 21:52:13 +0200 <dminuoso> But Im really itching.
2021-07-01 21:53:44 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-01 22:03:55 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-07-01 22:05:18 +0200 <maerwald> :D
2021-07-01 22:05:21 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 258 seconds)
2021-07-01 22:07:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-01 22:07:26 +0200juhp(~juhp@128.106.188.66)
2021-07-01 22:13:58 +0200jneira_(~jneira_@217.red-81-39-172.dynamicip.rima-tde.net)
2021-07-01 22:15:13 +0200chisui(~chisui@200116b866be75009cc16d86abb76e8b.dip.versatel-1u1.de)
2021-07-01 22:20:04 +0200wickedjargon(~wickedjar@cpeac202ebc90c3-cmac202ebc90c0.cpe.net.fido.ca) (Ping timeout: 268 seconds)
2021-07-01 22:25:18 +0200phma(phma@2001:5b0:211f:2298:dd93:a388:d3e:b1b1) (Read error: Connection reset by peer)
2021-07-01 22:25:49 +0200 <ixlun> Does anyone know how I'd go about starting to debug a performance issue with Conduit?
2021-07-01 22:26:32 +0200 <ixlun> I'm getting a lot of time spent and allocs in the function `injectLeftovers`
2021-07-01 22:26:32 +0200 <dminuoso> ixlun: You can start with the simple RTS profiler
2021-07-01 22:26:35 +0200phma(phma@2001:5b0:211f:fff8:cd25:f96a:65d:6896)
2021-07-01 22:26:49 +0200abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (Ping timeout: 258 seconds)
2021-07-01 22:27:04 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-07-01 22:28:37 +0200 <ixlun> dminuoso: Yep, I've done a profile and the above function appears to be the culprit. I'm not sure why though.
2021-07-01 22:30:35 +0200wickedjargon(~wickedjar@cpeac202ebc90c3-cmac202ebc90c0.cpe.net.fido.ca)
2021-07-01 22:31:53 +0200 <chris_> so ye i'm a little confused as too how to incremen
2021-07-01 22:32:03 +0200wickedjargon(~wickedjar@cpeac202ebc90c3-cmac202ebc90c0.cpe.net.fido.ca) (Client Quit)
2021-07-01 22:32:05 +0200 <chris_> as how to* write a function that recursively increments by n
2021-07-01 22:32:32 +0200 <Cale> chris_: What does this function compute?
2021-07-01 22:32:32 +0200 <Rembane> chris_: Increments what?
2021-07-01 22:33:05 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-01 22:35:56 +0200fendor(~fendor@77.119.218.107.wireless.dyn.drei.com)
2021-07-01 22:36:08 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-07-01 22:36:24 +0200 <chris_> i'm incrementing by +2 each time the function is called
2021-07-01 22:36:52 +0200 <chris_> i can paste my code somewhere maybe
2021-07-01 22:37:36 +0200 <chris_> the function is create a structure of notes where each note's interval (keys up on keyboard) is +n
2021-07-01 22:37:39 +0200 <geekosaur> @where paste
2021-07-01 22:37:39 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-07-01 22:37:59 +0200 <dminuoso> ixlun: What cost centers are generated? Did you use all-functions?
2021-07-01 22:38:34 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-07-01 22:38:47 +0200 <tomsmeding> ixlun: does the (huge) call stack trace below the top part of the profiling output tell anything interesting?
2021-07-01 22:38:49 +0200 <davean> injectLeftovers is pretty clear in what it does - don't have left overs, read just what you need? Is there a reason you're sending too much data down to consumers?
2021-07-01 22:39:07 +0200 <tomsmeding> not sure how using a streaming library messes up those call stacks
2021-07-01 22:39:12 +0200alphabeta(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 272 seconds)
2021-07-01 22:39:32 +0200 <davean> tomsmeding: its just functions? You might have to understand how streaming libraries are implimented though to understand what they mean
2021-07-01 22:39:45 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-01 22:39:49 +0200 <dminuoso> Indeed
2021-07-01 22:39:53 +0200 <ixlun> dminuoso: I'm not sure, I used the `--enable-profiling` cabal option.
2021-07-01 22:40:09 +0200 <tomsmeding> I thought there may be sufficient CPS going on that the callstack doesn't make sense anymore, but then I haven't used streaming libraries yet so in particular not with a profiler :p
2021-07-01 22:40:41 +0200 <chris_> https://paste.tomsmeding.com/sSE5bwAK
2021-07-01 22:40:53 +0200 <davean> tomsmeding: I mean I don't find CPS ruins callstacks, but I also understand the CPS, so your mileage might vary?
2021-07-01 22:41:01 +0200 <ixlun> davean: Indeed, I think that's the issue. Since the whole conduit is a function, the translation means that it's hard to figure out which part of the conduit is causing issues.
2021-07-01 22:41:07 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-07-01 22:41:19 +0200 <dminuoso> ixlun: Also add `--profiling-detail=all-functions`, then you might get more granular data.
2021-07-01 22:41:29 +0200 <tomsmeding> davean: I was just guessing, you're likely right :)
2021-07-01 22:42:02 +0200 <dminuoso> ixlun: At any rate, judging from an initial look at conduit, as long as you're just using conduit directly, it seems the only reasonable explanation is that you're only consuming little input. Are you perhaps left with too much.. leftovers at the end of your pipe?
2021-07-01 22:42:04 +0200 <davean> tomsmeding: it does mean you have to know EVERY name in the internals of the library, but we're not talking large libraries
2021-07-01 22:42:25 +0200 <dminuoso> ixlun: If you re-run with --profiling-detail=all-functions, perhaps you can share the output?
2021-07-01 22:42:26 +0200 <davean> dminuoso: they can happen at every step
2021-07-01 22:42:35 +0200 <tomsmeding> chris_: let the function take an extra parameter, e.g. "increment", where you add "increment" instead of 2, and recursively call with increment+2?
2021-07-01 22:43:03 +0200 <davean> dminuoso: so every monadic bind for example
2021-07-01 22:43:04 +0200 <dminuoso> davean: Yes, but if the cost center is right on `injectLeftovers`, then it's a matter of understanding where it's mostly called.
2021-07-01 22:43:10 +0200 <koz> For InstanceD, I get the parts of an instance declaration represented by the 'Maybe Overlap' and 'Cxt', but not the 'Type'.
2021-07-01 22:43:13 +0200 <dminuoso> davean: And injeftLeftovers is not called on monadic bind
2021-07-01 22:43:36 +0200 <koz> In the example in the docs, does the 'Type' correspond to 'Show [w]', or just '[w]'?
2021-07-01 22:43:40 +0200 <ixlun> dminuoso: Yep, running the profile now.
2021-07-01 22:43:45 +0200 <chris_> tomsmeding: i could do that, but then 1 of the params is redundant in a way
2021-07-01 22:43:49 +0200 <dminuoso> davean: Though, I think we're a bit at a cross roads.
2021-07-01 22:43:50 +0200 <koz> Docs here: https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH.html#t:Dec
2021-07-01 22:44:05 +0200 <tomsmeding> chris_: then write a wrapper function that just calls the function you just wrote with 2 :)
2021-07-01 22:44:16 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
2021-07-01 22:44:24 +0200 <chris_> ahhh ye that's prob what i want
2021-07-01 22:44:28 +0200 <tomsmeding> you can even hide the inner function by putting it in a 'where' block below the wrapper function
2021-07-01 22:44:39 +0200 <tomsmeding> this wrapper pattern is quite common in haskell
2021-07-01 22:44:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-07-01 22:45:03 +0200 <davean> dminuoso: well it depends on what things he's using - I'm saying it can show up at any, not that it does show up at any
2021-07-01 22:45:08 +0200 <dminuoso> Right
2021-07-01 22:45:13 +0200 <chris_> that's what i was thinking of ye intitially, shall i google haskell wrapper pattern? you have an example?
2021-07-01 22:45:28 +0200 <tomsmeding> not sure if that's the right name to be honest
2021-07-01 22:45:30 +0200 <dminuoso> davean: Hence, I asked for --profiling-detail=all-functions, hopefully this will give better cost centers. :)
2021-07-01 22:45:52 +0200 <davean> Why am I helping with conduit though? I ran away from that, I'm going back to machines where things make sense :-p
2021-07-01 22:46:23 +0200 <davean> If I want pushback to be a thing, I'll use a stack!
2021-07-01 22:46:33 +0200 <ixlun> dminuoso: https://termbin.com/tn6c
2021-07-01 22:46:36 +0200 <dminuoso> Okay... are you comparing conduit to a stack now? :<
2021-07-01 22:46:38 +0200GIANTWORLDKEEPER(~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
2021-07-01 22:46:49 +0200 <davean> dminuoso: Huh?
2021-07-01 22:46:56 +0200 <tomsmeding> chris_: https://hackage.haskell.org/package/base-4.15.0.0/docs/src/GHC-List.html#zipWith
2021-07-01 22:47:00 +0200 <Cale> chris_: What if you were to make a list of the intervals to start with, and then zipWith that with the ds?
2021-07-01 22:47:02 +0200 <davean> dminuoso: pushback is a stack operation
2021-07-01 22:47:17 +0200 <Cale> oh, you're already talking about this :)
2021-07-01 22:47:41 +0200 <davean> dminuoso: https://hackage.haskell.org/package/machines-0.7.2/docs/Data-Machine-Stack.html
2021-07-01 22:47:48 +0200 <tomsmeding> Cale: no, I was just showing an example of this wrapper pattern thing :p
2021-07-01 22:47:49 +0200 <dminuoso> Yes I understand..
2021-07-01 22:47:52 +0200 <Cale> ah
2021-07-01 22:47:53 +0200 <tomsmeding> and accidentally gave precisely zipWith
2021-07-01 22:48:02 +0200 <dminuoso> davean: Lets just drop it, I think we got our wires crossed here.
2021-07-01 22:48:03 +0200 <davean> dminuoso: if the entirety of the initial input is the dataset, pushback is stack push, and all reads are stack pop
2021-07-01 22:48:07 +0200 <davean> dminuoso: ok
2021-07-01 22:48:09 +0200 <davean> I'm confused
2021-07-01 22:48:24 +0200 <dminuoso> oh
2021-07-01 22:48:28 +0200 <dminuoso> Now I see what you mean
2021-07-01 22:48:36 +0200 <dminuoso> Odd, but okay
2021-07-01 22:48:46 +0200 <davean> Its litterly the stack operational semantics
2021-07-01 22:48:54 +0200 <davean> which allows you to compose it
2021-07-01 22:49:00 +0200 <davean> which allows you to control how it happens and where
2021-07-01 22:49:32 +0200 <davean> The implicity and inability to control it is one of the major pain points IME in optimizing streaming
2021-07-01 22:50:08 +0200 <Cale> chris_: So, you'd have something like f ds interval = foldr (:+:) (rest 0) $ zipWith (\d n -> note d (trans n (A,2)) [interval, 2*interval ..]
2021-07-01 22:50:14 +0200 <dminuoso> But isnt a conduit more like a fifo? You cant continuously push on a stack while you're popping and preserve the input order..
2021-07-01 22:50:34 +0200 <dminuoso> I must be misunderstanding something here
2021-07-01 22:50:48 +0200 <davean> dminuoso: no, it isn't, not internally - consider how "take 50" would be implimented on a string
2021-07-01 22:51:00 +0200 <davean> now consider how it would be implimented on Text
2021-07-01 22:51:29 +0200 <davean> With text you'd get a chunk that reached >= 50 charactures
2021-07-01 22:51:44 +0200 <davean> now, if you got the next characture, if you didn't stack push it, you'd lose the over-read data
2021-07-01 22:52:00 +0200 <davean> do { drop 50; head }
2021-07-01 22:52:03 +0200 <davean> what does head return?
2021-07-01 22:52:20 +0200 <davean> if the semantics were to differ between Text and String you'd have an issue
2021-07-01 22:53:02 +0200 <tomsmeding> (this sounds to me like you have a queue with a putback operation at the taking end, not necessarily that you now have a stack)
2021-07-01 22:53:12 +0200 <ixlun> Now my conduit does have a place where it takes one input value and outputs 15 values for each value. Would those be classed as leftovers?
2021-07-01 22:53:13 +0200 <davean> take/drop are somewhat simple examples, but consider parsers, which might have to read to see if they should consume
2021-07-01 22:53:14 +0200 <tomsmeding> (but /me is out of my depth here)
2021-07-01 22:53:14 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-07-01 22:53:40 +0200 <davean> tomsmeding: you (virtually) populate the entire stack with the entire data that will be streamed initially, and then you pop and push
2021-07-01 22:54:13 +0200 <tomsmeding> oooh you don't see the initial population as stack operations
2021-07-01 22:54:28 +0200 <davean> Its like setting the tape in a turing machine
2021-07-01 22:54:37 +0200 <davean> Its the starting condition
2021-07-01 22:54:51 +0200 <tomsmeding> my mental model (and I think dminuoso's) is that you're continuously feeding input at the tail end, and taking (and putting back of you over-took) at the head end
2021-07-01 22:54:59 +0200 <dminuoso> Yes.
2021-07-01 22:55:02 +0200 <tomsmeding> that's a queue with an additional "putback" operation
2021-07-01 22:55:13 +0200 <davean> Theres no way to actually feed
2021-07-01 22:55:16 +0200 <dminuoso> I somehow fail to understand davean's model.
2021-07-01 22:55:19 +0200 <davean> you can't control the head of a streamign library
2021-07-01 22:55:21 +0200 <tomsmeding> or, I guess, a stack with an additional shove-below-bottom operation
2021-07-01 22:55:32 +0200 <davean> You don't get any queue operations in any streaming library I know of
2021-07-01 22:55:34 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 22:55:39 +0200 <tomsmeding> dminuoso: create lazy list of all data, then take and putback at the front
2021-07-01 22:55:42 +0200 <tomsmeding> that take and putback is a stack
2021-07-01 22:55:51 +0200 <monochrom> I feel that the pushback operation is usually motivated by, only, wanting a lookahead and deciding split it into read-then-pushback.
2021-07-01 22:56:10 +0200 <dminuoso> What's the role of "putback"? leftover from conduit?
2021-07-01 22:56:16 +0200 <davean> monochrom: its not wanting - theres no choice
2021-07-01 22:56:21 +0200 <tomsmeding> dminuoso: as monochrom says, lookahead
2021-07-01 22:56:24 +0200 <monochrom> in which case perhaps supporting lookahead itself directly solves the real problem
2021-07-01 22:56:25 +0200 <davean> the control domains are split
2021-07-01 22:56:28 +0200 <dminuoso> tomsmeding: Right, then `leftover`!
2021-07-01 22:56:34 +0200 <dminuoso> Alright, I see what you mean
2021-07-01 22:57:03 +0200 <davean> Leftover (Pipe l i o u m r) l
2021-07-01 22:57:05 +0200 <davean> Return leftover input, which should be provided to future operations.
2021-07-01 22:57:07 +0200safinaskar(~safinaska@109.252.90.89)
2021-07-01 22:57:12 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-01 22:57:13 +0200 <davean> thats part of the core operational instructions of Conduit
2021-07-01 22:57:23 +0200TheRAt(~TheRAt@user/therat) (Ping timeout: 268 seconds)
2021-07-01 22:57:40 +0200 <davean> monochrom: well, its required if you're *monadic* I suppose - I guess weaker streaming might not require it
2021-07-01 22:57:41 +0200 <tomsmeding> that's approaching the number of type parameters in a project of mine
2021-07-01 22:57:48 +0200 <davean> monochrom: I'd have to consider if its optional in Selective
2021-07-01 22:58:00 +0200 <monochrom> and I feel that lookahead semantics and implementation is likely much nicer than pushback semantics and implementation
2021-07-01 22:58:11 +0200 <dminuoso> davean: Leftover is mostly just needed for fusion (and lookahead) though.
2021-07-01 22:58:19 +0200 <chris_> thx cale tomsmeding, looking at your stuff now
2021-07-01 22:58:27 +0200 <safinaskar> is there analog of c++'s std::vector in haskell? i. e. mutable vector i can add elements to. It should have function with type (Vec s a -> a -> ST s (Vec s a)) and that function should not create copy of a vector!
2021-07-01 22:58:29 +0200 <chris_> i just wrote another func for now with another param
2021-07-01 22:58:31 +0200 <davean> monochrom: You'd have to have fusion across arbitrary monadic value sets
2021-07-01 22:58:36 +0200 <chris_> but i'll see how u guys did it
2021-07-01 22:58:39 +0200 <dminuoso> or rather I need to got sleep, I cant form coherent sentences anymore
2021-07-01 22:58:39 +0200 <chris_> or recommend
2021-07-01 22:58:52 +0200 <davean> monochrom: I don't think its viable in any generalized streaming library
2021-07-01 22:59:05 +0200 <safinaskar> i am aware of hackage package "vector", but as well as i know, its "grow" function creates copy of source vector, and thus can be slow
2021-07-01 22:59:13 +0200 <davean> safinaskar: 'vector'
2021-07-01 22:59:21 +0200 <davean> safinaskar: C++'s also creates a copy
2021-07-01 22:59:34 +0200 <tomsmeding> davean: only if it exhausts the underlying buffer
2021-07-01 22:59:48 +0200 <davean> tomsmeding: correct, smae as MVector in 'vector' with certain uses
2021-07-01 23:00:08 +0200 <safinaskar> davean: if you push N elements to c++'s vector one-by-one, full copy will be performed (log N) times
2021-07-01 23:00:09 +0200 <ixlun> So, is the issue that I'm having that I don't have a 1:1 mapping between input and output elements?
2021-07-01 23:00:17 +0200 <davean> safinaskar: sure, so do that with 'vector'
2021-07-01 23:00:30 +0200 <dminuoso> ixlun: Personally Id do some memory profiling to be sure here.
2021-07-01 23:00:31 +0200 <safinaskar> davean: docs don't say this
2021-07-01 23:00:51 +0200 <chris_> https://paste.tomsmeding.com/xxaG2Kxy
2021-07-01 23:00:58 +0200 <chris_> tomsmeding:
2021-07-01 23:01:09 +0200 <davean> safinaskar: MVector !Int !Int !(MutableArray s a), so you'd have to use it the way you want it
2021-07-01 23:01:10 +0200 <chris_> Cale:
2021-07-01 23:01:41 +0200 <davean> safinaskar: it doesn't manage it for you
2021-07-01 23:01:44 +0200 <dminuoso> ixlun: I gotta go to bed, but this talk nicely illuminated how you can e.g. use eventlog2html https://www.youtube.com/watch?v=6Ljv5FHGXDM
2021-07-01 23:01:54 +0200 <safinaskar> okey, give 5 mins, i will write example
2021-07-01 23:01:54 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-07-01 23:02:08 +0200 <dminuoso> (or ghc-debug)
2021-07-01 23:02:10 +0200 <davean> safinaskar: But it allows slicing, so basicly you just return the size you want when you finish
2021-07-01 23:02:23 +0200 <davean> safinaskar: its not as nice
2021-07-01 23:02:32 +0200 <ixlun> dminuoso: Cool, thanks for the talk. I'll have a watch and see if I can get any further. Thanks!
2021-07-01 23:03:23 +0200 <monochrom> Yeah, I think Selective is related. Moving even one level up, the only motivation of lookahead is "a <- lookahead; case a of { 5 cases; }". It may be even better to just provide a cominbator for that instead of exposing lookahead.
2021-07-01 23:03:32 +0200 <davean> monochrom: anyway, I'd be super interested if you could show that you could cover the space of even something as limited as Conduit with just lookahead
2021-07-01 23:03:36 +0200 <davean> I don't think its theoretically possible
2021-07-01 23:04:04 +0200 <davean> monochrom: no, sadly thats not the only motivation
2021-07-01 23:04:10 +0200 <dminuoso> ixlun: Personally I suspect that at the end of your pipe you have something like a large String (or maybe some [Bit]), and are left with large amounts of unconsumed input.
2021-07-01 23:04:27 +0200 <davean> monochrom: I can push the pushback to an arbitrary depth
2021-07-01 23:04:33 +0200 <dminuoso> But I encourage you to perhaps look at the video, and try and employ those memory debugging techniques yourself.
2021-07-01 23:05:16 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-07-01 23:05:21 +0200 <ixlun> Indeed, I'll take a look.. Might be a job for tomorrow though. hanks for the link!
2021-07-01 23:05:35 +0200 <monochrom> Then this comes down to "LL(1) is much more optimzable than arbitrary lookahead, which is yet more optimizable than full monadic" etc.
2021-07-01 23:05:37 +0200 <davean> monochrom: this issue is deeply related to parsing
2021-07-01 23:05:47 +0200 <monochrom> Yeah, that.
2021-07-01 23:05:51 +0200 <dminuoso> Debugging this in terms of allocations is probably easier, since GHC has good abilities to show you where allocations happen exactly
2021-07-01 23:06:16 +0200 <davean> which is why I like calling in an explicite stack when I need it
2021-07-01 23:06:40 +0200cuz(~user@38.140.58.234) (Ping timeout: 265 seconds)
2021-07-01 23:06:42 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
2021-07-01 23:07:00 +0200 <safinaskar> here is example! https://paste.debian.net/1203071/
2021-07-01 23:07:31 +0200 <monochrom> BTW unpopular opinion: Control.Machine and Data.Lens. >:)
2021-07-01 23:07:33 +0200 <safinaskar> how many times this code will duplicate whole vector? (assuming N is length of source list, i. e. length of [a])
2021-07-01 23:07:37 +0200 <safinaskar> N or log(N)?
2021-07-01 23:08:42 +0200 <davean> safinaskar: N, because you're calling grow every time instead of slicing the vector
2021-07-01 23:09:16 +0200 <tomsmeding> davean: so what safinaskar is asking is whether there is a library that already encapsulates this intelligent growing behaviour
2021-07-01 23:09:30 +0200 <tomsmeding> (like std::vector in c++ :) )
2021-07-01 23:09:30 +0200 <davean> tomsmeding: for streaming and such there is, not sure about list
2021-07-01 23:09:56 +0200 <davean> for list, vector already has stuff
2021-07-01 23:10:13 +0200 <tomsmeding> I haven't seen such a library but that says absolutely nothing because I'm usually quite unaware of all the wealth of libraries in existence
2021-07-01 23:10:28 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-01 23:10:38 +0200 <davean> Data.Vector.fromList is O(N)
2021-07-01 23:10:41 +0200abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
2021-07-01 23:10:47 +0200 <davean> which clearly you can see doesn't allow N copies
2021-07-01 23:10:54 +0200 <davean> for example
2021-07-01 23:11:31 +0200 <tomsmeding> well yes, if you know in advance how many elements you're going to push, you can do it in linear time :)
2021-07-01 23:11:54 +0200 <davean> https://hackage.haskell.org/package/vector-conduit-0.5.0.0/docs/Data-Conduit-Vector.html for streaming for example
2021-07-01 23:12:03 +0200 <davean> tomsmeding: fromListN vs. fromList ;)
2021-07-01 23:12:49 +0200 <davean> tomsmeding: Vector's fusion system takes care of it
2021-07-01 23:12:54 +0200 <davean> oh, ok
2021-07-01 23:12:55 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-07-01 23:13:10 +0200 <davean> heres whats confusing here! safinaskar and tomsmeding, Vector depends on fusion to deal with this sort of thing
2021-07-01 23:13:47 +0200 <tomsmeding> which merges operations only if the compiler can pair them together
2021-07-01 23:14:03 +0200 <davean> tomsmeding: well, of it you do them specificly via explicite fusion
2021-07-01 23:14:12 +0200 <davean> tomsmeding: but like fromList does that explicitely
2021-07-01 23:14:17 +0200 <tomsmeding> right
2021-07-01 23:15:22 +0200 <davean> so Vector already encapsulates this, just not how you expect to see it
2021-07-01 23:16:12 +0200 <davean> All the normal functions in Vector already use it though
2021-07-01 23:16:20 +0200 <tomsmeding> but long story short, Vector doesn't have this 'push' operation, but it should be easily implementable in terms of 'grow' with slicing?
2021-07-01 23:16:33 +0200 <davean> tomsmeding: It does have the push operation, on Streams
2021-07-01 23:16:47 +0200 <davean> tomsmeding: under Data.Vector.Fusion.Stream
2021-07-01 23:17:11 +0200 <davean> tomsmeding: see snoc and cons
2021-07-01 23:17:50 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds)
2021-07-01 23:18:10 +0200 <safinaskar> tomsmeding: "but it should be easily implementable in terms of 'grow' with slicing" - no, because i don't want new variable, i want "push" to look like it changed existing entity. I. e. I want to still refer to my modified vector using same "MVector s a" handle, just as I can in C++
2021-07-01 23:19:00 +0200 <davean> cons prepends an element, snock appends an element
2021-07-01 23:19:19 +0200 <tomsmeding> but doesn't mutate the reference
2021-07-01 23:19:26 +0200Iryon(~Iryon@2a02:a31a:a045:3500:90e2:686f:e863:4359) (Remote host closed the connection)
2021-07-01 23:19:29 +0200 <davean> Right because we're a functional language
2021-07-01 23:19:31 +0200 <tomsmeding> safinaskar: I think the conclusion is that at least vector doesn't provide the exact API you want
2021-07-01 23:19:46 +0200 <safinaskar> tomsmeding: yes
2021-07-01 23:19:53 +0200 <safinaskar> okey, i will try to find library i want
2021-07-01 23:20:14 +0200 <davean> I mean in a technical sense nothing will
2021-07-01 23:20:18 +0200 <davean> Haskell always rebinds
2021-07-01 23:20:24 +0200 <tomsmeding> it could, right?
2021-07-01 23:20:30 +0200 <tomsmeding> safinaskar was asking for a mutable-vector API
2021-07-01 23:20:34 +0200 <tomsmeding> in an ST monad
2021-07-01 23:20:40 +0200 <tomsmeding> and then you suddenly have all kinds of possibilities
2021-07-01 23:20:45 +0200 <davean> It could look like it, but it couldn't do it
2021-07-01 23:20:54 +0200 <davean> Not at a low level you don't
2021-07-01 23:21:00 +0200 <davean> the ST cell will constantly rebind
2021-07-01 23:21:02 +0200 <davean> at best
2021-07-01 23:21:17 +0200 <tomsmeding> will the underlying mutable byte array not be modified in-place?
2021-07-01 23:21:23 +0200 <koz> I'm doing something like [d| instance $(foo) => IsBar ... |]. According to GHC, foo :: Q Type. However, I can't see a way to construct a list of superclass constraints in Type's data constructors. What am I missing?
2021-07-01 23:21:28 +0200acid(~acid@user/acid) (Read error: Connection reset by peer)
2021-07-01 23:21:36 +0200acid(~acid@user/acid)
2021-07-01 23:22:05 +0200 <davean> tomsmeding: it'll be modified in place, sure, but your pointer to it won't - and thats the same low level operations I was describing above, and looks almost the same at the higher level
2021-07-01 23:22:33 +0200 <tomsmeding> davean: the point is that you can make an implementation of the suggested API that has the intended complexity
2021-07-01 23:22:33 +0200 <davean> tomsmeding: Haskell implimentations reuse parts in memory all the time
2021-07-01 23:22:39 +0200 <tomsmeding> whether some pointers are copied or not is immaterial :p
2021-07-01 23:22:47 +0200 <davean> tomsmeding: and what we already have has the same complexity and the same oeprations
2021-07-01 23:22:57 +0200 <tomsmeding> no, the operations have a slightly different API
2021-07-01 23:23:15 +0200 <davean> Right, at the end you unstream
2021-07-01 23:23:19 +0200 <tomsmeding> of course, perhaps it might be good to restructure code to use the existing API instead of forcing your own
2021-07-01 23:23:20 +0200 <davean> vs. freeze
2021-07-01 23:23:22 +0200 <tomsmeding> but that's a different question!
2021-07-01 23:23:27 +0200 <davean> No, no restructuring
2021-07-01 23:23:37 +0200 <davean> its the difference between unstream and freeze
2021-07-01 23:24:18 +0200 <tomsmeding> I kind of feel we're talking past each other here :)
2021-07-01 23:24:22 +0200 <davean> maybe
2021-07-01 23:24:30 +0200 <davean> have you looked at the streaming stuff?
2021-07-01 23:25:14 +0200 <tomsmeding> I'm not familiar with the fusion internals, so I was trying to think about implementing the given API based on top-level, non-streaming vector functions
2021-07-01 23:25:21 +0200 <davean> This is NOT internals really
2021-07-01 23:25:31 +0200 <davean> This is an exposed interface
2021-07-01 23:25:39 +0200 <davean> This is the top level API
2021-07-01 23:25:43 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-07-01 23:25:54 +0200 <tomsmeding> which I clearly know too little about :)
2021-07-01 23:26:15 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-01 23:26:38 +0200 <tomsmeding> I'll have a better look at it at some point, because it looks kind of sophisticated
2021-07-01 23:26:51 +0200 <tomsmeding> the design, at least
2021-07-01 23:27:29 +0200 <davean> tomsmeding: what about it?
2021-07-01 23:27:37 +0200 <davean> its almost directly parrallel the standard vector API
2021-07-01 23:28:16 +0200 <tomsmeding> maybe I should stop making unsubstantiated claims
2021-07-01 23:28:22 +0200 <monochrom> koz: ForallT has a Cxt field. Cxt = [Pred] = [Type]. That would be a list of constraints.
2021-07-01 23:28:29 +0200cheater1__(~Username@user/cheater)
2021-07-01 23:28:30 +0200 <davean> tomsmeding: note I said Vector, not MVector
2021-07-01 23:28:35 +0200 <koz> monochrom: Ah, thanks!
2021-07-01 23:28:36 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-07-01 23:28:42 +0200cheater1__cheater
2021-07-01 23:28:44 +0200 <davean> tomsmeding: the difference is in name binding
2021-07-01 23:28:59 +0200 <koz> What would go in its third argument in this case?
2021-07-01 23:29:04 +0200 <safinaskar> davean: "see snoc and cons" - they are pure functional. They return other vector, not the same. (I want api to look like it modifies in place)
2021-07-01 23:29:11 +0200 <koz> Or should I wrap the whole thing?
2021-07-01 23:29:22 +0200 <davean> safinaskar: that does modify in place.
2021-07-01 23:29:23 +0200 <koz> So it'd be [d| instance $(foo) where ... |]?
2021-07-01 23:29:47 +0200 <geekosaur> you need to be in IO or ST to do that. but are you prematurely optimizing, or just using a non-Haskelly API for some reason?
2021-07-01 23:29:53 +0200 <tomsmeding> davean: note the "api to look like"
2021-07-01 23:29:55 +0200 <davean> safinaskar: or at least it doesn't move, copy, or such any existing data
2021-07-01 23:30:07 +0200 <monochrom> Hrm, I don't know. I would expect foo :: Q [Type] actually.
2021-07-01 23:30:14 +0200 <davean> "In place" is a little undefined for new data! :)
2021-07-01 23:30:23 +0200 <davean> In terms of hte old data though, it doesn't touch it
2021-07-01 23:30:43 +0200 <koz> monochrom: That's what I would expect as well, but clearly not. I can wrap the whole thing if that's what it takes.
2021-07-01 23:30:51 +0200 <monochrom> so that it means Q [Pred], list of constraints
2021-07-01 23:31:02 +0200 <davean> tomsmeding: which part do you mean by look-like here?
2021-07-01 23:31:55 +0200 <koz> If I try [d| instance $(foo) where ... |], GHC complains.
2021-07-01 23:32:02 +0200 <davean> tomsmeding: do you want hte name rebindign to be implicite never explicite? I guess I don't see a difference because the name always rebinds
2021-07-01 23:32:05 +0200 <koz> (aka it tells me my instance is malformed)
2021-07-01 23:32:31 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-01 23:32:35 +0200 <koz> But if I try [d| instance $(foo) => IsBar (conT typeName) where ... |], GHC insists that foo :: Q Type.
2021-07-01 23:34:17 +0200 <tomsmeding> davean: ah now I see, it was me who was confused. safinaskar asked for a function with type signature (Vec s a -> a -> ST s (Vec s a)), whereas I thought they were asking for (Vec s a -> a -> ST s ())
2021-07-01 23:34:32 +0200 <davean> tomsmeding: Ah! ok, so yah
2021-07-01 23:34:37 +0200 <tomsmeding> where I would say that the second "looks like" it modifies in place, whereas the first doesn't
2021-07-01 23:34:54 +0200 <tomsmeding> what they do to the underlying buffer is a different, orthogonal issue (which the question also had a requirement on)
2021-07-01 23:35:40 +0200 <davean> tomsmeding: well this explains our conversation :)
2021-07-01 23:35:43 +0200fendor(~fendor@77.119.218.107.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-07-01 23:35:45 +0200 <tomsmeding> :')
2021-07-01 23:36:42 +0200fendor(~fendor@77.119.218.107.wireless.dyn.drei.com)
2021-07-01 23:36:44 +0200tomsmedingwas confused by the language of "look like" which I would interpret as the second type signature
2021-07-01 23:36:50 +0200 <safinaskar> tomsmeding: yes, i mean type with "ST s ()" in the end
2021-07-01 23:36:54 +0200 <tomsmeding> lol
2021-07-01 23:37:00 +0200 <safinaskar> it seems i can write lib i want
2021-07-01 23:37:07 +0200 <safinaskar> wait 5 mins, i will show you code
2021-07-01 23:37:25 +0200 <monochrom> All pronouns and the adjective "like" should be banned from programming discussions.
2021-07-01 23:37:47 +0200acidjnk_new(~acidjnk@p200300d0c72b9504558b1d2f6b7134fe.dip0.t-ipconnect.de)
2021-07-01 23:38:04 +0200tomsmeding. o O ( SELECT * FROM table WHERE thing LIKE '%abc%' )
2021-07-01 23:38:24 +0200 <safinaskar> tomsmeding: use "he" when talking about me
2021-07-01 23:38:26 +0200 <monochrom> Programming is not marketing, there is no room for that much ambiguity and refusing to really spell out what you mean.
2021-07-01 23:39:30 +0200 <tomsmeding> safinaskar: I suspected that, but I try to build a habit of saying 'they' in any situation of vaguely unclear genering :p
2021-07-01 23:39:56 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-01 23:40:05 +0200 <tomsmeding> monochrom: I would love to live in that world
2021-07-01 23:40:24 +0200 <tomsmeding> also where everyone speaks and writes the common language with poise
2021-07-01 23:40:30 +0200 <tomsmeding> unfortunately that is not the world we live in :p
2021-07-01 23:41:51 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Quit: node-irc says goodbye)
2021-07-01 23:43:29 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-07-01 23:43:30 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-01 23:43:35 +0200 <tomsmeding> s/genering/gendering/ .-.
2021-07-01 23:47:09 +0200 <davean> tomsmeding: you can always hide the naming by sticking it in an STRef and <$> the opterations or something :)
2021-07-01 23:49:05 +0200notzmv(~zmv@user/notzmv)
2021-07-01 23:49:48 +0200 <safinaskar> i wrote vector i want!!!!! look here: https://paste.debian.net/1203074/
2021-07-01 23:50:27 +0200 <tomsmeding> "With C++-like performance -- I didn't try to compile this" X doubt :p
2021-07-01 23:51:55 +0200 <safinaskar> i mean "with same asymptotic"
2021-07-01 23:52:22 +0200 <tomsmeding> yep that looks quite like I expected it to look
2021-07-01 23:52:51 +0200 <tomsmeding> I wonder if it would be slightly more efficient to use only one STRef, but that really can only be answered with benchmarking
2021-07-01 23:53:28 +0200 <tomsmeding> safinaskar: downside of wrapping MVector like this: you'll have to wrap all the other vector operations you want as well :p
2021-07-01 23:54:15 +0200 <orzo> i'm looking for a haskell job
2021-07-01 23:54:22 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-01 23:54:28 +0200 <orzo> anybody hiring haskellers?
2021-07-01 23:55:44 +0200 <tomsmeding> safinaskar: I believe C++ doesn't do scaling by 2 but by the golden ratio (phi), because phi^2 = phi + 1; that means that after growing twice, the new buffer fits precisely where the previous two buffers were in memory
2021-07-01 23:55:46 +0200 <tomsmeding> but I may misremember
2021-07-01 23:56:07 +0200 <tomsmeding> also profile profile :p