2023/07/18

2023-07-18 00:01:25 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-07-18 00:05:15 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836)
2023-07-18 00:05:52 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 245 seconds)
2023-07-18 00:05:59 +0200chiselfuse(~chiselfus@user/chiselfuse) (Ping timeout: 240 seconds)
2023-07-18 00:07:56 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-07-18 00:08:53 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-07-18 00:09:38 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) (Ping timeout: 260 seconds)
2023-07-18 00:10:35 +0200acidjnk(~acidjnk@p200300d6e7072f770cf848d8868092f6.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2023-07-18 00:12:58 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-07-18 00:15:41 +0200 <sm> and this is what tested package sets are for. Pretty simple, I don't know why people still ask about it
2023-07-18 00:18:12 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds)
2023-07-18 00:21:35 +0200nick4(~nick@2600:100d:b126:6e75:7c64:2bc8:586e:a3ac) (Ping timeout: 264 seconds)
2023-07-18 00:23:29 +0200 <monochrom> That's just "taxpayers are responsible for their own tax calculations in US and Canada" vs "government does the tax calculations for you in Hong Kong".
2023-07-18 00:23:58 +0200 <monochrom> I'm from Hong Kong so I get to say "it's pretty simple, why do people make their own lives harder" too.
2023-07-18 00:26:13 +0200 <sm> well, I do know. I should have said, so don't know why we as a community don't communicate this better to newcomers
2023-07-18 00:26:43 +0200 <sm> s/so/I/
2023-07-18 00:26:52 +0200wroathe(~wroathe@user/wroathe)
2023-07-18 00:28:11 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-07-18 00:29:45 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 258 seconds)
2023-07-18 00:34:06 +0200Guest66(~Guest66@2601:14b:4101:8da0:84f2:9dc9:72ab:e343)
2023-07-18 00:35:34 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 272 seconds)
2023-07-18 00:38:18 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836)
2023-07-18 00:38:38 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-07-18 00:40:33 +0200nick4(~nick@2600:8807:9084:7800:5dfe:adbf:7a8a:2199)
2023-07-18 00:43:10 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) (Ping timeout: 272 seconds)
2023-07-18 00:44:41 +0200Guest66(~Guest66@2601:14b:4101:8da0:84f2:9dc9:72ab:e343) (Ping timeout: 246 seconds)
2023-07-18 00:45:42 +0200nick4(~nick@2600:8807:9084:7800:5dfe:adbf:7a8a:2199) (Ping timeout: 272 seconds)
2023-07-18 00:49:34 +0200pavonia(~user@user/siracusa)
2023-07-18 00:50:08 +0200zmt01(~zmt00@user/zmt00)
2023-07-18 00:53:55 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2023-07-18 01:00:32 +0200mncheck(~mncheck@193.224.205.254) (Ping timeout: 240 seconds)
2023-07-18 01:00:46 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-07-18 01:09:51 +0200fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-18 01:12:57 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-07-18 01:13:17 +0200mei(~mei@user/mei) (Ping timeout: 246 seconds)
2023-07-18 01:16:22 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-07-18 01:17:46 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2023-07-18 01:18:16 +0200mechap(~mechap@user/mechap) (Quit: WeeChat 4.0.2)
2023-07-18 01:22:21 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-18 01:26:24 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-07-18 01:27:30 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2023-07-18 01:28:35 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 01:28:42 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836)
2023-07-18 01:28:57 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 01:31:13 +0200ru0mad(~ru0mad@titan.ruomad.net)
2023-07-18 01:32:27 +0200dolio(~dolio@130.44.134.54)
2023-07-18 01:32:52 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:91cb:37cc:152b:5836) (Ping timeout: 245 seconds)
2023-07-18 01:33:00 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 01:33:24 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 01:38:41 +0200mauke_(~mauke@user/mauke)
2023-07-18 01:40:10 +0200ru0mad(~ru0mad@titan.ruomad.net) (Ping timeout: 272 seconds)
2023-07-18 01:40:17 +0200mauke(~mauke@user/mauke) (Ping timeout: 258 seconds)
2023-07-18 01:40:17 +0200mauke_mauke
2023-07-18 01:41:17 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 01:41:39 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 01:43:53 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 01:45:50 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::c680) (Ping timeout: 246 seconds)
2023-07-18 01:45:52 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2023-07-18 01:47:03 +0200Feuermagier(~Feuermagi@user/feuermagier)
2023-07-18 01:47:05 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
2023-07-18 01:48:37 +0200gurkenglas(~gurkengla@dynamic-046-114-180-206.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-07-18 01:48:43 +0200cheater(~Username@user/cheater)
2023-07-18 01:49:52 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 240 seconds)
2023-07-18 01:51:28 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2023-07-18 01:54:35 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 01:54:58 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 01:56:33 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-07-18 01:56:50 +0200mechap(~mechap@user/mechap)
2023-07-18 02:03:24 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-07-18 02:12:59 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
2023-07-18 02:13:46 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-07-18 02:14:21 +0200califax(~califax@user/califx)
2023-07-18 02:14:28 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-07-18 02:17:15 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 02:19:14 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 02:19:31 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2023-07-18 02:21:03 +0200califax_(~califax@user/califx)
2023-07-18 02:21:41 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 258 seconds)
2023-07-18 02:22:51 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-07-18 02:22:52 +0200califax_califax
2023-07-18 02:23:51 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1)
2023-07-18 02:24:35 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds)
2023-07-18 02:25:45 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 02:26:04 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 02:26:09 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 02:26:44 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Quit: leaving)
2023-07-18 02:27:52 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2023-07-18 02:31:11 +0200mechap(~mechap@user/mechap) (Ping timeout: 246 seconds)
2023-07-18 02:31:39 +0200leungbk(~user@2603-8000-1201-2dd2-36ab-a543-68a1-6b50.res6.spectrum.com)
2023-07-18 02:32:09 +0200mechap(~mechap@user/mechap)
2023-07-18 02:36:22 +0200nyc(~nyc@user/nyc)
2023-07-18 02:36:55 +0200picklejuice(~root@172.56.218.140) (Ping timeout: 240 seconds)
2023-07-18 02:38:38 +0200picklejuice(~root@172.56.220.204)
2023-07-18 02:42:02 +0200infinity0(~infinity0@pwned.gg) (Ping timeout: 245 seconds)
2023-07-18 02:43:33 +0200infinity0(~infinity0@pwned.gg)
2023-07-18 02:43:35 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 02:43:38 +0200mechap(~mechap@user/mechap) (Ping timeout: 260 seconds)
2023-07-18 02:44:33 +0200pickleju1ce(~root@c-73-196-164-60.hsd1.nj.comcast.net)
2023-07-18 02:45:25 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 02:45:27 +0200mechap(~mechap@user/mechap)
2023-07-18 02:47:05 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-07-18 02:47:47 +0200infinity0(~infinity0@pwned.gg) (Remote host closed the connection)
2023-07-18 02:47:56 +0200thegeekinside(~thegeekin@189.217.90.138) (Ping timeout: 272 seconds)
2023-07-18 02:48:08 +0200picklejuice(~root@172.56.220.204) (Ping timeout: 246 seconds)
2023-07-18 02:50:42 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-07-18 02:51:14 +0200infinity0(~infinity0@pwned.gg)
2023-07-18 02:51:17 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2023-07-18 02:59:12 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 02:59:15 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-07-18 02:59:15 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-07-18 02:59:15 +0200wroathe(~wroathe@user/wroathe)
2023-07-18 02:59:55 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-07-18 03:00:12 +0200arahael_(~arahael@1.145.35.206)
2023-07-18 03:01:17 +0200infinity0(~infinity0@pwned.gg) (Remote host closed the connection)
2023-07-18 03:01:22 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 03:02:00 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 03:03:23 +0200infinity0(~infinity0@pwned.gg)
2023-07-18 03:05:34 +0200arizona(~arizona@bcdcac82.skybroadband.com) (Ping timeout: 260 seconds)
2023-07-18 03:06:16 +0200arahael_(~arahael@1.145.35.206) (Ping timeout: 245 seconds)
2023-07-18 03:06:30 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 260 seconds)
2023-07-18 03:08:15 +0200razetime(~quassel@117.193.5.43)
2023-07-18 03:10:04 +0200bilegeek(~bilegeek@2600:1008:b021:9e23:6101:8bf4:489c:4627)
2023-07-18 03:10:43 +0200arizona(~arizona@bcdcac82.skybroadband.com)
2023-07-18 03:10:57 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-07-18 03:11:58 +0200Inst__(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 03:17:04 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-07-18 03:17:27 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 03:18:27 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-18 03:18:27 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-18 03:18:27 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 03:21:35 +0200shapr(~user@2600:1700:c640:3100:52c3:290a:8adb:cc55) (Ping timeout: 246 seconds)
2023-07-18 03:26:39 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 03:28:42 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 03:32:41 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 03:32:45 +0200tabemann(~tabemann@2600:1700:7990:24e0:fde3:7ca7:a0b6:2269) (Remote host closed the connection)
2023-07-18 03:32:56 +0200tabemann(~travisb@2600:1700:7990:24e0:5306:cf38:acd1:737c)
2023-07-18 03:32:56 +0200ft(~ft@p508dbe50.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-07-18 03:34:58 +0200ft(~ft@p3e9bc856.dip0.t-ipconnect.de)
2023-07-18 03:39:07 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 245 seconds)
2023-07-18 03:41:54 +0200Guest585(~mike@user/feetwind) (Quit: WeeChat 3.1)
2023-07-18 03:42:05 +0200feetwind(~mike@user/feetwind)
2023-07-18 03:43:12 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 03:43:34 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 03:44:44 +0200Feuermagier(~Feuermagi@user/feuermagier) (Quit: Leaving)
2023-07-18 03:55:24 +0200[itchyjunk][notItchy]
2023-07-18 03:56:25 +0200Guest3849(~user@76.133.152.122)
2023-07-18 03:57:02 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds)
2023-07-18 03:57:47 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Remote host closed the connection)
2023-07-18 03:58:11 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf)
2023-07-18 04:06:41 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-07-18 04:07:11 +0200leungbk(~user@2603-8000-1201-2dd2-36ab-a543-68a1-6b50.res6.spectrum.com) (Remote host closed the connection)
2023-07-18 04:07:43 +0200Guest77(~Guest77@122.11.166.8)
2023-07-18 04:14:28 +0200phma(phma@2001:5b0:210b:e378:ed22:f5d0:8c20:185c) (Read error: Connection reset by peer)
2023-07-18 04:14:52 +0200phma(phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029)
2023-07-18 04:15:25 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-18 04:16:41 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 245 seconds)
2023-07-18 04:24:45 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-07-18 04:24:45 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-07-18 04:24:45 +0200finn_elijaFinnElija
2023-07-18 04:25:55 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 04:28:02 +0200phma(phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029) (Read error: Connection reset by peer)
2023-07-18 04:28:26 +0200phma(~phma@host-67-44-208-43.hnremote.net)
2023-07-18 04:28:38 +0200td_(~td@i53870921.versanet.de) (Ping timeout: 272 seconds)
2023-07-18 04:29:29 +0200Inst(~Inst@2601:6c4:4081:2fc0:79c8:42a5:37ad:5ebf) (Ping timeout: 246 seconds)
2023-07-18 04:29:35 +0200Inst_(~Inst@2601:6c4:4081:2fc0:1c30:3af5:9430:2bcf)
2023-07-18 04:30:02 +0200td_(~td@i53870919.versanet.de)
2023-07-18 04:30:30 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 260 seconds)
2023-07-18 04:35:20 +0200Guest77(~Guest77@122.11.166.8) (Ping timeout: 246 seconds)
2023-07-18 04:35:47 +0200ddellacosta(~ddellacos@143.244.47.68) (Ping timeout: 246 seconds)
2023-07-18 04:36:31 +0200 <maerwald> so Hong Kong prefers stack?
2023-07-18 04:38:46 +0200 <maerwald> I'm ok with tested package sets (at least a core) ...but stack makes it extra hard to use packages outside that set. That's why we need better cabal support for stackage.
2023-07-18 04:40:18 +0200ddellacosta(~ddellacos@143.244.47.81)
2023-07-18 04:41:06 +0200 <sclv> remote project files are most of the way there imho
2023-07-18 04:49:14 +0200 <maerwald> sclv: still can't override stuff like in stack
2023-07-18 04:49:42 +0200 <sclv> right. that’s important future work
2023-07-18 04:51:12 +0200 <maerwald> I kept annoying duncan about it a couple times, but apart from "it's easy" I didn't get much out of him (wrt constraint algebra)
2023-07-18 04:56:57 +0200 <hololeap> are there any "piping" libraries that also support Control.Arrow?
2023-07-18 04:57:02 +0200[notItchy](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-07-18 04:57:25 +0200foul_owl(~kerry@157.97.134.168) (Read error: Connection reset by peer)
2023-07-18 04:58:00 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 04:58:27 +0200 <hololeap> s/also /
2023-07-18 05:00:25 +0200 <hololeap> I asked in here recently about splitting an input conduit into two separate conduits and recombining their results at the end
2023-07-18 05:00:38 +0200 <hololeap> and it didn't sound like it was possible
2023-07-18 05:02:23 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds)
2023-07-18 05:04:46 +0200 <fvr> hololeap: I know it's possible to do with the streamly library (tee function in streamly-core) but I am not familiar enough with conduit library
2023-07-18 05:05:15 +0200 <hololeap> thanks fvr I'm just looking for places to look
2023-07-18 05:05:38 +0200 <hololeap> I haven't looked into streamly
2023-07-18 05:05:48 +0200 <hololeap> although I've heard a lot of good things
2023-07-18 05:10:12 +0200 <maerwald> hololeap: I made a migration guide for conduit to streamly
2023-07-18 05:10:15 +0200 <maerwald> https://hasufell.github.io/posts/2021-10-22-conduit-to-streamly.html
2023-07-18 05:10:16 +0200 <maerwald> but...
2023-07-18 05:10:27 +0200 <maerwald> the main problem with streamly is that API breaks too fast too often
2023-07-18 05:10:35 +0200 <maerwald> otherwise I think it's superior to all others
2023-07-18 05:11:03 +0200 <maerwald> so my blog post code will likely not compile with streamly-0.9.x anymore, which proves my point
2023-07-18 05:11:40 +0200 <maerwald> I don't understand why people constantly break API... like, do you get new ideas every few months?
2023-07-18 05:12:33 +0200 <fvr> The upgrade was due to happen for a long time, besides I think it's considered okay to break Internal
2023-07-18 05:12:41 +0200 <fvr> There's an upgrade guide https://streamly.composewell.com/streamly-0.9.0/User/ProjectRelated/Upgrading.html
2023-07-18 05:13:21 +0200 <maerwald> no, it's not ok to break internal and the *entire* Streamly prelude was deprecated and exported symbols removed (non-internal)
2023-07-18 05:13:35 +0200 <maerwald> I stopped bothering and added <0.9
2023-07-18 05:13:38 +0200 <fvr> yeah but this was in 0.9 a breaking release anyway
2023-07-18 05:14:46 +0200 <fvr> I haven't upgraded to 0.9 yet, so don't know how much of a chore it is
2023-07-18 05:14:57 +0200 <maerwald> if you use Parsers, everything is broken
2023-07-18 05:15:46 +0200 <maerwald> so... I'm now wondering whether it's a good idea to rely on streamly in a professional setting, where the cost of upgrading is not low
2023-07-18 05:17:14 +0200 <fvr> Parser was always in Internal though, so the project thinks it's okay to move them around
2023-07-18 05:17:42 +0200 <maerwald> yeah, except you can't use streamly for anything serious if you're only using nonn-internal API
2023-07-18 05:18:03 +0200 <maerwald> because it's a huge WIP package
2023-07-18 05:18:07 +0200 <fvr> yeah, but now in streamly-core 0.1 it is exported from non Internal
2023-07-18 05:18:29 +0200 <fvr> Streamly.Data.Parser, so perhaps just renaming the import and still importing the Internal version just works
2023-07-18 05:19:13 +0200 <hololeap> maerwald: I will check out your guide, thanks
2023-07-18 05:19:18 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2023-07-18 05:19:27 +0200 <hololeap> seems like it would be really informative for me
2023-07-18 05:25:39 +0200 <jackdk> This is why I just stick with `streaming`, which seems like the right balance between "does what I need", "fits into my head", and "doesn't break the universe all the time"
2023-07-18 05:29:33 +0200 <fvr> streaming also provides stream of streams which no other popular streaming library does correctly
2023-07-18 05:30:50 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 05:35:05 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds)
2023-07-18 05:38:52 +0200 <hololeap> that sounds like what I want then :)
2023-07-18 05:39:05 +0200foul_owl(~kerry@71.212.137.212)
2023-07-18 05:41:05 +0200phma(~phma@host-67-44-208-43.hnremote.net) (Read error: Connection reset by peer)
2023-07-18 05:41:30 +0200phma(phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029)
2023-07-18 05:44:38 +0200foul_owl(~kerry@71.212.137.212) (Ping timeout: 272 seconds)
2023-07-18 05:46:13 +0200 <sm> I don't want to keep banging on about stack and cabal but.. how does stack make it extra hard to use packages outside that set maerwald ? I'm used to adding such packages in stack.yaml extra-deps, or just as extra arguments to stack install
2023-07-18 05:46:43 +0200 <sm> or as extra items in the packages list
2023-07-18 05:47:14 +0200 <sclv> we don't need a constraint algebra -- there's a much simpler proposal for how overrides work on the table. its just that nobody has time to implement it.
2023-07-18 05:48:48 +0200 <sclv> sm: one issue as i understand it is the regression with regards to being able to use the solver -- before you could solve for what version of an extra package to add (a feature you get automatically when using the project imports style from cabal). but as of some years ago the solver support was bitrotted and then removed, so the user has to figure out by some other means what version is compatible before they can add it.
2023-07-18 05:50:08 +0200 <maerwald> sm: yes, stack doesn't have a solver, so it knows nothing of which version to suggest when it's not in the stackage set
2023-07-18 05:50:10 +0200 <sm> sclv: stack dropped cabal's solver I know, alas, but I wouldn't say that makes it hard to use packages outside the snapshot.
2023-07-18 05:50:15 +0200 <maerwald> it does
2023-07-18 05:50:19 +0200 <maerwald> it keeps going in circles
2023-07-18 05:50:42 +0200 <maerwald> it says add "foo-0.9" then you do and 5 suggestions later it says "now add foo-0.8"
2023-07-18 05:50:47 +0200 <sm> it means it's not trying to do everything under the sun, and recognising cabal is good at that
2023-07-18 05:50:49 +0200 <maerwald> that's because it doesn't know better
2023-07-18 05:50:58 +0200 <maerwald> and that's a serious usability issue
2023-07-18 05:51:48 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-07-18 05:53:45 +0200 <sm> maerwald: I think you are thinking of a case where constructing your own extra-snapshot install plan is hard with stack. There are obviously lots of cases like that, and lots where going outside the snapshot with a package or two is trivially easy. Personally, I would not say "stack makes going outside the package set hard", because that can give new users a wrong idea. I'd say it makes it easy. And, then it's up to you to find a good install plan.
2023-07-18 05:54:43 +0200 <maerwald> look, if someone would pay me and say "pick stack or cabal and make it better", I'd pick stack and re-integrate a solver, rip out all the insane defaults and integrate it with ghcup properly... because I think stack has the better codebase
2023-07-18 05:55:08 +0200 <maerwald> but it's probably much more work than just enhancing what's left in cabal
2023-07-18 05:55:21 +0200 <maerwald> especially wrt backpack and multilib
2023-07-18 05:56:43 +0200 <maerwald> sm: I've had recurring issues with stack in maybe 75% of the cases when trying to go outside the set
2023-07-18 05:56:51 +0200 <maerwald> in private and professional setting
2023-07-18 05:57:16 +0200foul_owl(~kerry@157.97.134.168)
2023-07-18 05:57:24 +0200 <sm> that doesn't conflict with what I said at all. I am just trying to see each tool accurately described
2023-07-18 05:57:30 +0200 <sm> then we can make better choices
2023-07-18 05:58:05 +0200 <sm> new users can, in particular, use whichever is easier for them
2023-07-18 05:58:35 +0200 <maerwald> depends what type of choice... using something or contributing to something
2023-07-18 05:58:41 +0200 <sm> and not feel stupid for not knowing the current cabal lore / latest constraints breakage
2023-07-18 05:59:01 +0200aforemny_(~aforemny@i59F516E9.versanet.de)
2023-07-18 05:59:54 +0200 <maerwald> open source has weird dynamics
2023-07-18 05:59:55 +0200aforemny(~aforemny@i59F516E8.versanet.de) (Ping timeout: 240 seconds)
2023-07-18 06:00:20 +0200 <maerwald> sometimes, the worst codebase survives (e.g. X0rg)
2023-07-18 06:10:49 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-07-18 06:11:14 +0200razetime(~quassel@117.193.5.43) (Ping timeout: 272 seconds)
2023-07-18 06:12:23 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 246 seconds)
2023-07-18 06:16:13 +0200neuroevolutus(~neuroevol@2001:ac8:9a:76::1e)
2023-07-18 06:16:48 +0200neuroevolutus(~neuroevol@2001:ac8:9a:76::1e) (Client Quit)
2023-07-18 06:18:44 +0200oneeyedalien(~oneeyedal@user/oneeyedalien)
2023-07-18 06:20:40 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 06:21:53 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2023-07-18 06:24:57 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 245 seconds)
2023-07-18 06:27:33 +0200biberu(~biberu@user/biberu)
2023-07-18 06:42:59 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-07-18 06:49:57 +0200notzmv(~zmv@user/notzmv)
2023-07-18 06:50:12 +0200razetime(~quassel@117.193.5.43)
2023-07-18 06:52:57 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 06:56:50 +0200razetime(~quassel@117.193.5.43) (Ping timeout: 272 seconds)
2023-07-18 06:57:11 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds)
2023-07-18 06:58:02 +0200oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2023-07-18 07:09:00 +0200 <glguy> After working on a number of parsing and pretty printing projects I'm starting to think that putting comments in the lexical syntax isn't so great. It makes comments hard to preserve and emit. In JSON contexts it's common to work around that by ignoring table keys with the name "comment" , for example. I used to think that was kind of a hack, but I'm starting to think it's actually rather superior
2023-07-18 07:09:01 +0200 <glguy> to regular comments. I wonder if others have thought about this
2023-07-18 07:10:02 +0200 <Axman6> Sounds a wee bit like Stockholm syndrome to me :P
2023-07-18 07:11:50 +0200michalz(~michalz@185.246.207.217)
2023-07-18 07:15:59 +0200bilegeek(~bilegeek@2600:1008:b021:9e23:6101:8bf4:489c:4627) (Quit: Leaving)
2023-07-18 07:20:32 +0200 <davean> glguy: because its slightly less options? I'm not quite seeing what the win here is.
2023-07-18 07:21:19 +0200mei(~mei@user/mei)
2023-07-18 07:23:17 +0200 <glguy> It gives the comment a specific anchor into the syntax, like how we use haddock comments with | and ^
2023-07-18 07:24:16 +0200 <glguy> In Haskell we've kind of extended comments into the syntax that way. There are specific points that a haddock comment is defined to attach to syntax
2023-07-18 07:25:38 +0200 <glguy> davean: I think it's more about clarity about what the comment is attached to rather than just fewer options
2023-07-18 07:27:55 +0200 <glguy> Comments get used for a couple different things. Documentation, but also just disabling something without having to delete it. We often use the same mechanism for both things, but that might not be ideal
2023-07-18 07:30:04 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 07:34:30 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 246 seconds)
2023-07-18 07:35:52 +0200 <jackdk> glguy: what if you approach the problem from another direction, and designed the language so you could attach first-class metadata to more things?
2023-07-18 07:38:03 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 07:39:54 +0200trev(~trev@user/trev)
2023-07-18 07:39:57 +0200 <glguy> Yeah, seems interesting. Do you know of any examples? A really basic version of this is probably Python using an in-language string literal for its function documentation. Allowing extensible annotations to be added across the ast could be neat
2023-07-18 07:40:57 +0200 <jackdk> I have dim memories of clojure doing this: https://clojure.org/reference/metadata but I would also like to be able to attach and retrieve metadata on declarations and expressions rather than just vars. But maybe that locks you into having access to the syntax tree at all times?
2023-07-18 07:41:46 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-07-18 07:42:12 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 246 seconds)
2023-07-18 07:47:10 +0200mncheck(~mncheck@193.224.205.254)
2023-07-18 07:50:34 +0200Fischmiep(~Fischmiep@user/Fischmiep) (Ping timeout: 252 seconds)
2023-07-18 07:50:51 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 07:51:49 +0200 <siraben> How can I get cabal repl to work but I get the following error?
2023-07-18 07:51:49 +0200 <siraben> <command line>: User-specified static library could not be loaded (/nix/store/hzcc9rw3mifk14zfj1hx8yxkfrcb5zyy-clang-wrapper-11.1.0/bin/c++)
2023-07-18 07:51:49 +0200 <siraben> Loading static libraries is not supported in this configuration.
2023-07-18 07:51:49 +0200 <siraben> Try using a dynamic library instead.
2023-07-18 07:52:07 +0200 <siraben> This is the flake.nix: <command line>: User-specified static library could not be loaded (/nix/store/hzcc9rw3mifk14zfj1hx8yxkfrcb5zyy-clang-wrapper-11.1.0/bin/c++)
2023-07-18 07:52:07 +0200 <siraben> Loading static libraries is not supported in this configuration.
2023-07-18 07:52:07 +0200 <siraben> Try using a dynamic library instead.
2023-07-18 07:52:12 +0200 <siraben> Oops, https://github.com/ethereum/hevm/blob/main/flake.nix
2023-07-18 07:52:26 +0200 <maerwald[m]> Oh well, nix
2023-07-18 07:52:28 +0200 <siraben> I think I have to pass some compiler flag, I'm on macOS.
2023-07-18 07:52:36 +0200 <siraben> Maybe this question is better suited for the Nix haskell channel
2023-07-18 07:52:47 +0200 <siraben> But I've encountered this issue before even without Nix
2023-07-18 07:55:05 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 246 seconds)
2023-07-18 07:55:22 +0200Fischmiep(~Fischmiep@user/Fischmiep)
2023-07-18 07:55:22 +0200Fischmiep(~Fischmiep@user/Fischmiep) (Excess Flood)
2023-07-18 07:56:01 +0200 <jackdk> There are a lot of static-related things being plumbed into hevmUnwrapped, which might be what's blocking you.
2023-07-18 07:56:20 +0200Fischmiep(~Fischmiep@user/Fischmiep)
2023-07-18 07:59:45 +0200oneeyedalien(~oneeyedal@user/oneeyedalien)
2023-07-18 08:01:16 +0200codaraxis__(~codaraxis@user/codaraxis)
2023-07-18 08:04:47 +0200codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 264 seconds)
2023-07-18 08:06:18 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 258 seconds)
2023-07-18 08:11:55 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 08:13:59 +0200mauke(~mauke@user/mauke) (Ping timeout: 246 seconds)
2023-07-18 08:15:02 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-07-18 08:15:47 +0200 <davean> jackdk: that would make more sense to me, and is a thing I've missed in Haskell
2023-07-18 08:16:47 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 264 seconds)
2023-07-18 08:20:51 +0200oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2023-07-18 08:21:41 +0200acidjnk(~acidjnk@p200300d6e7072f560cf848d8868092f6.dip0.t-ipconnect.de)
2023-07-18 08:22:57 +0200aforemny_aforemny
2023-07-18 08:25:02 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 252 seconds)
2023-07-18 08:25:36 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-07-18 08:26:01 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-07-18 08:26:08 +0200Sgeo(~Sgeo@user/sgeo)
2023-07-18 08:28:53 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-07-18 08:33:10 +0200gmg(~user@user/gehmehgeh)
2023-07-18 08:36:33 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-07-18 08:36:33 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 08:39:47 +0200Guest8732(~finn@176-151-21-224.abo.bbox.fr)
2023-07-18 08:40:04 +0200pickleju1ce(~root@c-73-196-164-60.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2023-07-18 08:43:53 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 08:48:12 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 240 seconds)
2023-07-18 08:51:39 +0200libertyprime(~libertypr@203.96.203.44)
2023-07-18 09:02:09 +0200CiaoSen(~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef)
2023-07-18 09:05:59 +0200fendor(~fendor@2a02:8388:1640:be00:1f28:32b1:54ac:a932)
2023-07-18 09:10:23 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-18 09:16:10 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-18 09:18:21 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 09:18:28 +0200hackyhacker(~hackyhack@2a05:f480:1400:24b2:5400:4ff:fe76:a8f3) (Quit: The Lounge - https://thelounge.chat)
2023-07-18 09:20:55 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-07-18 09:35:10 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 272 seconds)
2023-07-18 09:35:25 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 240 seconds)
2023-07-18 09:35:58 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 09:43:43 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-07-18 09:43:52 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
2023-07-18 09:44:10 +0200Ashkan(~Ashkan@ec2-54-78-14-109.eu-west-1.compute.amazonaws.com)
2023-07-18 09:44:23 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Ping timeout: 264 seconds)
2023-07-18 09:46:21 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Remote host closed the connection)
2023-07-18 09:46:35 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2023-07-18 09:47:09 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-18 09:50:43 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 09:51:10 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 09:52:45 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0)
2023-07-18 09:54:11 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection)
2023-07-18 09:55:14 +0200 <siraben> jackdk: thanks, commenting out the extra-lib-dirs stuff fixed it!
2023-07-18 09:55:26 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 272 seconds)
2023-07-18 09:55:37 +0200titibandit(~titibandi@user/titibandit)
2023-07-18 09:57:08 +0200ub(~Thunderbi@77.119.175.12.wireless.dyn.drei.com)
2023-07-18 09:57:18 +0200misterfish(~misterfis@87.215.131.102)
2023-07-18 09:57:28 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 09:58:07 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Client Quit)
2023-07-18 09:58:30 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 09:58:34 +0200ubert(~Thunderbi@91.141.70.181.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2023-07-18 09:58:34 +0200ububert
2023-07-18 09:59:42 +0200gurkenglas(~gurkengla@dynamic-002-247-243-208.2.247.pool.telefonica.de)
2023-07-18 10:12:05 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 10:12:31 +0200danse-nr3_(~francesco@151.57.218.169)
2023-07-18 10:13:48 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 272 seconds)
2023-07-18 10:14:12 +0200alexbiehl(~alexbiehl@2a02:8108:323f:c964:c8b9:341:c65c:41d0) (Remote host closed the connection)
2023-07-18 10:14:44 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285)
2023-07-18 10:16:58 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2023-07-18 10:17:00 +0200danse-nr3_(~francesco@151.57.218.169) (Ping timeout: 250 seconds)
2023-07-18 10:17:01 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-18 10:17:58 +0200 <jackdk> Well, how about that `:)`
2023-07-18 10:18:52 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Ping timeout: 240 seconds)
2023-07-18 10:27:38 +0200ubert1(~Thunderbi@77.119.175.12.wireless.dyn.drei.com)
2023-07-18 10:28:36 +0200azy_(~azy@87-97-13-0.pool.digikabel.hu) (Ping timeout: 252 seconds)
2023-07-18 10:29:55 +0200danse-nr3(~francesco@151.57.218.169)
2023-07-18 10:30:27 +0200azy(~azy@92-249-150-146.static.digikabel.hu)
2023-07-18 10:34:48 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-07-18 10:37:52 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 245 seconds)
2023-07-18 10:39:36 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-18 10:40:34 +0200dibblego(~dibblego@haskell/developer/dibblego) (Quit: λ)
2023-07-18 10:43:55 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
2023-07-18 10:50:26 +0200danse-nr3(~francesco@151.57.218.169) (Ping timeout: 245 seconds)
2023-07-18 10:53:33 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 10:56:00 +0200danse-nr3(~francesco@151.57.218.169)
2023-07-18 10:59:12 +0200ft(~ft@p3e9bc856.dip0.t-ipconnect.de) (Quit: leaving)
2023-07-18 11:01:06 +0200chele(~chele@user/chele)
2023-07-18 11:01:22 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-18 11:02:15 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-07-18 11:05:13 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-07-18 11:06:00 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-07-18 11:16:15 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-18 11:16:15 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-18 11:16:15 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 11:21:08 +0200fweht(uid404746@id-404746.lymington.irccloud.com)
2023-07-18 11:29:12 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2023-07-18 11:29:28 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 258 seconds)
2023-07-18 11:29:34 +0200ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 260 seconds)
2023-07-18 11:31:23 +0200ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2023-07-18 11:35:45 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-07-18 11:36:06 +0200Ashkan(~Ashkan@ec2-54-78-14-109.eu-west-1.compute.amazonaws.com) (Quit: Client closed)
2023-07-18 11:36:46 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2023-07-18 11:38:36 +0200Lord_of_Life_Lord_of_Life
2023-07-18 11:39:43 +0200alexbiehl(~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de)
2023-07-18 11:41:02 +0200dibblego(~dibblego@haskell/developer/dibblego) (Excess Flood)
2023-07-18 11:42:05 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-18 11:42:05 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-18 11:42:05 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 11:42:43 +0200ncf(~n@monade.li) (Quit: Fairfarren.)
2023-07-18 11:42:52 +0200ncf(~n@monade.li)
2023-07-18 11:43:29 +0200dibblego(~dibblego@haskell/developer/dibblego) (Excess Flood)
2023-07-18 11:46:04 +0200alexbiehl(~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2023-07-18 11:46:37 +0200Guest3849(~user@76.133.152.122) (ERC 5.6-git (IRC client for GNU Emacs 30.0.50))
2023-07-18 11:52:36 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285)
2023-07-18 11:54:46 +0200__monty__(~toonn@user/toonn)
2023-07-18 11:57:44 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection)
2023-07-18 11:59:30 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-18 11:59:30 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-18 11:59:30 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 12:02:08 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-18 12:03:29 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Remote host closed the connection)
2023-07-18 12:03:35 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2023-07-18 12:04:19 +0200remexre(~remexre@user/remexre) (Read error: Connection reset by peer)
2023-07-18 12:04:57 +0200azy(~azy@92-249-150-146.static.digikabel.hu) (Ping timeout: 245 seconds)
2023-07-18 12:05:10 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2023-07-18 12:05:37 +0200img(~img@user/img)
2023-07-18 12:05:40 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 12:06:40 +0200azy(~azy@84-236-1-98.pool.digikabel.hu)
2023-07-18 12:06:41 +0200remexre(~remexre@user/remexre)
2023-07-18 12:07:32 +0200kmein_(~weechat@user/kmein) (Quit: ciao kakao)
2023-07-18 12:07:52 +0200kmein(~weechat@user/kmein)
2023-07-18 12:08:26 +0200img(~img@user/img) (Client Quit)
2023-07-18 12:09:35 +0200libertyprime(~libertypr@203.96.203.44) (Quit: leaving)
2023-07-18 12:10:06 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Ping timeout: 258 seconds)
2023-07-18 12:10:09 +0200img(~img@user/img)
2023-07-18 12:11:59 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Remote host closed the connection)
2023-07-18 12:12:03 +0200img(~img@user/img) (Client Quit)
2023-07-18 12:12:58 +0200img(~img@user/img)
2023-07-18 12:13:20 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2023-07-18 12:15:45 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 12:16:15 +0200dibblego(~dibblego@haskell/developer/dibblego) (Read error: Connection timed out)
2023-07-18 12:20:48 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 252 seconds)
2023-07-18 12:22:32 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 12:24:47 +0200razetime(~quassel@117.193.5.43)
2023-07-18 12:32:32 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 12:36:32 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1)
2023-07-18 12:42:00 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 272 seconds)
2023-07-18 12:46:19 +0200picklejuice(~root@c-73-196-164-60.hsd1.nj.comcast.net)
2023-07-18 12:46:26 +0200azy(~azy@84-236-1-98.pool.digikabel.hu) (Ping timeout: 272 seconds)
2023-07-18 12:46:43 +0200mango(~finn@rul16-h01-176-151-21-224.dsl.sta.abo.bbox.fr)
2023-07-18 12:47:55 +0200azy(~azy@213-197-76-111.pool.digikabel.hu)
2023-07-18 12:49:06 +0200kuribas(~user@ptr-17d51emwh8tjgyi2pjo.18120a2.ip6.access.telenet.be)
2023-07-18 12:49:46 +0200Guest8732(~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 252 seconds)
2023-07-18 12:50:44 +0200czy(~user@host-140-26.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Ping timeout: 258 seconds)
2023-07-18 12:51:52 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-18 12:51:52 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-18 12:51:52 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 12:52:38 +0200CiaoSen(~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef) (Ping timeout: 260 seconds)
2023-07-18 12:54:09 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-18 12:55:07 +0200img(~img@user/img)
2023-07-18 12:55:37 +0200danse-nr3(~francesco@151.57.218.169) (Remote host closed the connection)
2023-07-18 12:56:03 +0200danse-nr3(~francesco@151.57.218.169)
2023-07-18 12:57:58 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 12:58:42 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-07-18 12:58:52 +0200venkateshK[m](~randomint@2001:470:69fc:105::3:852e)
2023-07-18 13:00:12 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-18 13:01:04 +0200img(~img@user/img)
2023-07-18 13:03:51 +0200danse-nr3(~francesco@151.57.218.169) (Remote host closed the connection)
2023-07-18 13:05:51 +0200dibblego(~dibblego@haskell/developer/dibblego) (Read error: Connection timed out)
2023-07-18 13:07:38 +0200tomku(~tomku@user/tomku) (Ping timeout: 246 seconds)
2023-07-18 13:08:22 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 258 seconds)
2023-07-18 13:10:33 +0200razetime(~quassel@117.193.5.43) (Remote host closed the connection)
2023-07-18 13:12:03 +0200ncf_(~n@monade.li)
2023-07-18 13:12:33 +0200ncf_(~n@monade.li) (Client Quit)
2023-07-18 13:17:43 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-18 13:21:12 +0200azy(~azy@213-197-76-111.pool.digikabel.hu) (Ping timeout: 245 seconds)
2023-07-18 13:21:54 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-07-18 13:22:47 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2023-07-18 13:23:06 +0200azy(~azy@193-110-63-47.cable-modem.hdsnet.hu)
2023-07-18 13:24:36 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 245 seconds)
2023-07-18 13:27:04 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285)
2023-07-18 13:29:22 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 13:34:10 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 250 seconds)
2023-07-18 13:37:02 +0200mango(~finn@rul16-h01-176-151-21-224.dsl.sta.abo.bbox.fr) (Ping timeout: 245 seconds)
2023-07-18 13:39:28 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-18 13:39:28 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-18 13:39:28 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 13:40:55 +0200anpad(~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-18 13:42:48 +0200anpad(~pandeyan@user/anpad)
2023-07-18 13:45:38 +0200mixfix41(~sdeny9ee@user/mixfix41)
2023-07-18 13:56:43 +0200ripspin(~chatzilla@1.145.144.100)
2023-07-18 13:57:35 +0200danse-nr3(~francesco@151.43.142.135)
2023-07-18 14:00:31 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 14:04:52 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 240 seconds)
2023-07-18 14:07:27 +0200dibblego(~dibblego@haskell/developer/dibblego) (Quit: λ)
2023-07-18 14:07:41 +0200tv(~tv@user/tv) (Ping timeout: 246 seconds)
2023-07-18 14:09:34 +0200tv(~tv@user/tv)
2023-07-18 14:12:32 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-07-18 14:13:14 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 14:14:07 +0200tv(~tv@user/tv) (Ping timeout: 245 seconds)
2023-07-18 14:14:50 +0200azy(~azy@193-110-63-47.cable-modem.hdsnet.hu) (Ping timeout: 246 seconds)
2023-07-18 14:15:17 +0200comerijn(~merijn@088-129-128-083.dynamic.caiway.nl)
2023-07-18 14:15:59 +0200tv(~tv@user/tv)
2023-07-18 14:16:35 +0200azy(~azy@178-164-171-246.pool.digikabel.hu)
2023-07-18 14:18:05 +0200thegeekinside(~thegeekin@189.217.90.138) (Read error: Connection reset by peer)
2023-07-18 14:18:11 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2023-07-18 14:22:27 +0200mechap(~mechap@user/mechap) (Ping timeout: 245 seconds)
2023-07-18 14:23:45 +0200mechap(~mechap@user/mechap)
2023-07-18 14:26:23 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 264 seconds)
2023-07-18 14:29:33 +0200trev(~trev@user/trev) (Quit: trev)
2023-07-18 14:30:00 +0200gurkenglas(~gurkengla@dynamic-002-247-243-208.2.247.pool.telefonica.de) (Read error: Connection reset by peer)
2023-07-18 14:31:24 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-07-18 14:38:52 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-07-18 14:39:28 +0200CiaoSen(~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef)
2023-07-18 14:39:45 +0200danse-nr3(~francesco@151.43.142.135) (Ping timeout: 246 seconds)
2023-07-18 14:41:23 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection)
2023-07-18 14:42:33 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 14:44:00 +0200kupi(uid212005@id-212005.hampstead.irccloud.com)
2023-07-18 14:46:07 +0200mechap(~mechap@user/mechap) (Ping timeout: 258 seconds)
2023-07-18 14:46:46 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 272 seconds)
2023-07-18 14:47:07 +0200mechap(~mechap@user/mechap)
2023-07-18 14:47:24 +0200azy(~azy@178-164-171-246.pool.digikabel.hu) (Ping timeout: 272 seconds)
2023-07-18 14:48:43 +0200azy(~azy@fibhost-67-47-59.fibernet.hu)
2023-07-18 14:49:32 +0200Vq(~vq@90-227-195-9-no77.tbcn.telia.com) (Quit: Server maintenance)
2023-07-18 14:50:13 +0200shapr(~user@2600:1700:c640:3100:7ba2:ae9a:8376:1284)
2023-07-18 14:52:50 +0200jonathan(~jonathan@c83-252-3-92.bredband.tele2.se)
2023-07-18 14:54:14 +0200danse-nr3(~francesco@151.43.142.135)
2023-07-18 14:54:57 +0200 <jonathan> When I build with "Wall -Werror", I find myself spending quite a bit of time fixing up redundant import statements. Is there a tool to automate this process?
2023-07-18 14:55:15 +0200gurkenglas(~gurkengla@dynamic-002-247-243-208.2.247.pool.telefonica.de)
2023-07-18 14:55:26 +0200mei(~mei@user/mei) (Quit: mei)
2023-07-18 14:55:53 +0200 <fvr> jonathan: something other than hls?
2023-07-18 14:56:10 +0200mei(~mei@user/mei)
2023-07-18 14:59:31 +0200 <jonathan> Is there a code action for it? Having it on command line for all files would be great, but a "remove redundant imports" would take me a bit on the way
2023-07-18 14:59:52 +0200qqq(~qqq@92.43.167.61)
2023-07-18 15:00:43 +0200 <fvr> yeah there is remove redundant imports code action
2023-07-18 15:02:10 +0200phma(phma@2001:5b0:210b:e378:cbed:ddba:6ef2:8029) (Read error: Connection reset by peer)
2023-07-18 15:02:13 +0200p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
2023-07-18 15:02:34 +0200phma(phma@2001:5b0:210b:e378:a2bb:6ce4:5380:526f)
2023-07-18 15:03:34 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
2023-07-18 15:06:55 +0200Vq(~vq@90-227-195-9-no77.tbcn.telia.com)
2023-07-18 15:10:11 +0200mechap(~mechap@user/mechap) (Ping timeout: 264 seconds)
2023-07-18 15:10:41 +0200mechap(~mechap@user/mechap)
2023-07-18 15:12:56 +0200Inst_(~Inst@2601:6c4:4081:2fc0:1c30:3af5:9430:2bcf) (Ping timeout: 246 seconds)
2023-07-18 15:13:02 +0200 <jackdk> I would expect a haskell autoformatter to clean it up too; I know ormolu does this but I would expect others to do so also
2023-07-18 15:15:01 +0200dibblego(~dibblego@116.255.1.151)
2023-07-18 15:15:02 +0200dibblego(~dibblego@116.255.1.151) (Changing host)
2023-07-18 15:15:02 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-18 15:16:26 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
2023-07-18 15:19:21 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-07-18 15:19:36 +0200mechap(~mechap@user/mechap) (Remote host closed the connection)
2023-07-18 15:20:00 +0200mechap(~mechap@user/mechap)
2023-07-18 15:20:08 +0200mango(~finn@176-151-21-224.abo.bbox.fr)
2023-07-18 15:22:28 +0200 <geekosaur> I thought formatters had access only to the source they were formatting? It would need to analyze the imported modules to detect redundant imports
2023-07-18 15:22:44 +0200 <geekosaur> unless it's something obvious like a module imported twice
2023-07-18 15:26:28 +0200Midjak(~Midjak@82.66.147.146)
2023-07-18 15:28:10 +0200azy(~azy@fibhost-67-47-59.fibernet.hu) (Ping timeout: 252 seconds)
2023-07-18 15:30:02 +0200azy(~azy@85-238-93-58.pool.digikabel.hu)
2023-07-18 15:41:22 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 252 seconds)
2023-07-18 15:48:35 +0200TheblackPuppet(~u0_a891@149.140.105.147)
2023-07-18 15:48:57 +0200 <c_wraith> redundant imports can be non-trivial in Haskell, thanks to allowing re-exports.
2023-07-18 15:54:26 +0200trev(~trev@user/trev)
2023-07-18 15:59:11 +0200son0p(~ff@181.136.122.143) (Ping timeout: 245 seconds)
2023-07-18 16:00:41 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-07-18 16:02:56 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-18 16:04:57 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 16:05:54 +0200thegeekinside(~thegeekin@189.217.90.138) (Read error: Connection reset by peer)
2023-07-18 16:06:28 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection)
2023-07-18 16:07:12 +0200azy(~azy@85-238-93-58.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-07-18 16:07:35 +0200tomku(~tomku@user/tomku)
2023-07-18 16:09:15 +0200azy(~azy@178-164-171-242.pool.digikabel.hu)
2023-07-18 16:13:32 +0200mncheck(~mncheck@193.224.205.254) (Ping timeout: 272 seconds)
2023-07-18 16:15:08 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-07-18 16:23:37 +0200tomku(~tomku@user/tomku) (Quit: Lost terminal)
2023-07-18 16:25:42 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-07-18 16:26:33 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 258 seconds)
2023-07-18 16:28:47 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2023-07-18 16:32:11 +0200tomku(~tomku@user/tomku)
2023-07-18 16:44:37 +0200TheblackPuppet(~u0_a891@149.140.105.147) (Quit: WeeChat 4.0.1)
2023-07-18 16:45:42 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-07-18 16:47:38 +0200 <danse-nr3> this is probably a tired topic but ... how comes `head` and similar are still unsafe? Pointers to existing flame wars appreciated
2023-07-18 16:47:48 +0200azy(~azy@178-164-171-242.pool.digikabel.hu) (Ping timeout: 246 seconds)
2023-07-18 16:49:30 +0200azy(~azy@78-131-74-116.pool.digikabel.hu)
2023-07-18 16:51:19 +0200motherfsck(~motherfsc@user/motherfsck) (Read error: Connection reset by peer)
2023-07-18 16:51:35 +0200 <int-e> they're partial, not unsafe
2023-07-18 16:51:36 +0200 <glguy> danse-nr3: they aren't unsafe, they're partial. You should use them when it's obvious that they will work. If you don't know if the list is empty there are other options: pattern matching, listToMaybe, etc. There's not really a flame war to point to
2023-07-18 16:51:37 +0200danse-nr3(~francesco@151.43.142.135) (Remote host closed the connection)
2023-07-18 16:52:02 +0200danse-nr3(~francesco@151.43.142.135)
2023-07-18 16:52:23 +0200 <glguy> Not all properties of values can be reflected into their types, it's an approximation
2023-07-18 16:55:29 +0200 <int-e> > map (head &&& length) . group . sort $ "abracadabra"
2023-07-18 16:55:30 +0200 <lambdabot> [('a',5),('b',2),('c',1),('d',1),('r',2)]
2023-07-18 16:55:38 +0200notzmv(~zmv@user/notzmv)
2023-07-18 16:56:24 +0200 <int-e> (one of many totally appropriate uses of `head`)
2023-07-18 16:56:38 +0200 <danse-nr3> well by safe i mean type safety, which is the same as non-partiality at least in this case. I know types can get only to some point, but this seems simple to improve
2023-07-18 16:58:05 +0200 <glguy> It wouldn't be simple to improve because you'd end up with impossible cases to handle some other way
2023-07-18 16:58:21 +0200 <jade[m]> int-e: you could use `Data.List.NonEmpty.Group` and then have it all typesafe
2023-07-18 16:58:32 +0200 <glguy> jade[m]: that doesn't scale
2023-07-18 16:58:59 +0200 <glguy> A whole duplicate module needed to be created for the at-least-one special case
2023-07-18 16:59:14 +0200 <danse-nr3> glguy, impossible? Uncomfortable, maybe, but not much
2023-07-18 16:59:36 +0200 <glguy> Uncomfortable but also not useful
2023-07-18 16:59:38 +0200 <int-e> we could make things *worse* by having a "total" head :: [a] -> Maybe a (that's actually what listToMaybe) and working in the Maybe monad for as long as possible, and then when we ultimately get Nothing due to a bug we will have no information at all about what function failed.
2023-07-18 17:00:16 +0200 <jade[m]> glguy: apologies, the module is just NonEmpty and the function is group
2023-07-18 17:00:23 +0200 <jade[m]> i accidently made that uppercase
2023-07-18 17:01:03 +0200 <int-e> NonEmpty could be great if it was a subtype of [a].
2023-07-18 17:01:06 +0200 <zzz> int-e: just add a writer monad
2023-07-18 17:01:12 +0200 <glguy> jade[m]: right, that module is a special case that we would have to duplicate for every subset of list
2023-07-18 17:01:13 +0200 <int-e> But subtypes are their own can of worms
2023-07-18 17:01:43 +0200 <glguy> NonEmpty, Even list, AtLeastThree list
2023-07-18 17:02:12 +0200 <dolio> Type safety is not the same as non-partiality.
2023-07-18 17:02:50 +0200 <zzz> my rule is to always pattern match instead of using head
2023-07-18 17:03:25 +0200 <zzz> i don't think head should be in the prelude
2023-07-18 17:03:43 +0200 <glguy> zzz: could you rewrite int-e's example in your style for reference?
2023-07-18 17:03:57 +0200 <zzz> oh i just got here, let me check scrollback
2023-07-18 17:04:44 +0200 <danse-nr3> > map (head &&& length) . group . sort $ ""
2023-07-18 17:04:45 +0200 <lambdabot> []
2023-07-18 17:04:53 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 258 seconds)
2023-07-18 17:06:03 +0200 <int-e> You'll always have code where some cases are known to be impossible even though that's not captured by the types. Lists that are known to be non-empty is just a very common instance of that.
2023-07-18 17:06:28 +0200 <glguy> danse-nr3: "impossible" cases meant values that will never occur, like [] will never be in the output list of group
2023-07-18 17:06:30 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
2023-07-18 17:06:32 +0200 <zzz> i can't, not that line in a vacuum. i'm sure i could get around it in context
2023-07-18 17:06:39 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-07-18 17:08:01 +0200 <glguy> So you can case on the list, bit then you're stuck again in the [] -> branch
2023-07-18 17:08:43 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-07-18 17:09:01 +0200 <zzz> i feel like the compiler could be smarter about impossible cases
2023-07-18 17:09:19 +0200 <zzz> but i may be illuded as to how simple of a problem that is
2023-07-18 17:09:54 +0200 <zzz> my intuition is that identifying dead code should be trivian in haskell
2023-07-18 17:10:00 +0200 <zzz> *trivial
2023-07-18 17:10:03 +0200 <int-e> lol
2023-07-18 17:10:16 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 17:10:22 +0200 <int-e> (you're only solving the halting problem, how hard could it be)
2023-07-18 17:10:44 +0200 <danse-nr3> well there is NonEmpty and that can have an easy head. But well, i guess i have something to learn ... i ... would not use head and similar in no case, just find the lack of safety (or partiality) dangerous
2023-07-18 17:10:54 +0200 <danse-nr3> :t maximum
2023-07-18 17:10:55 +0200 <lambdabot> (Foldable t, Ord a) => t a -> a
2023-07-18 17:11:03 +0200 <danse-nr3> % maximum []
2023-07-18 17:11:03 +0200 <yahb2> *** Exception: Prelude.maximum: empty list
2023-07-18 17:11:20 +0200 <danse-nr3> in haskell, documentation does not get as far as types do
2023-07-18 17:11:42 +0200 <int-e> Sure, `NonEmpty` does work for the case of `group`. But at the same time, `group` is so simple that I'm not getting much benefit out of that case.
2023-07-18 17:11:59 +0200 <zzz> int-e: no, i don't think so. sure there are situations where you cannot know like recursive types and whatnot but it should be easy to know when you can't know
2023-07-18 17:12:42 +0200 <dolio> Yes, you could have group return a list of non-empty lists. Then that example turns into one involving both non-empty and normal lists, and duplicating the API on lists, which either means you need to add cruft to your code to disambiguate between the two APIs, or you need to overload everything.
2023-07-18 17:13:14 +0200 <int-e> zzz: There's no clear boundary between the two (you can always try harder). The right move is to not try beyond *very* clearly defined boundaries... which are given by the type system.
2023-07-18 17:13:36 +0200 <int-e> GHC's exhaustiveness check for patterns is already pretty complex as is.
2023-07-18 17:13:49 +0200 <int-e> (And already goes wrong on occasion.)
2023-07-18 17:13:52 +0200Inst(~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345)
2023-07-18 17:14:16 +0200Sgeo(~Sgeo@user/sgeo)
2023-07-18 17:14:48 +0200 <danse-nr3> dolio, you mean that there is no path towards reasonable type safety? I dislike NonEmpty as well, but i think i just ignore how it could evolve. `head` is a simpler problem anyways
2023-07-18 17:14:59 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Ping timeout: 264 seconds)
2023-07-18 17:16:01 +0200thegeekinside(~thegeekin@189.217.90.138) (Read error: Connection reset by peer)
2023-07-18 17:17:17 +0200 <zzz> int-e: in this specific case, wouldn't it be easy to know that group will never give you an empty list?
2023-07-18 17:17:25 +0200 <zzz> for the compiler, i mean
2023-07-18 17:17:49 +0200 <danse-nr3> just use NonEmpty then ... but still this is shifting the problem
2023-07-18 17:18:21 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-07-18 17:19:14 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-18 17:19:17 +0200mizlan(~mizlan@c-174-62-68-33.hsd1.ca.comcast.net)
2023-07-18 17:19:18 +0200 <int-e> zzz: I'm not sure what your goalpost is at this point. I'd still want to write the code with `head`, even if the compiler manages to elide the `error "Prelude.head: empty list"` code in the end (which it actually just might as part of build/foldr fusion).
2023-07-18 17:19:37 +0200 <zzz> int-e: no goalpost! just curiosity :)
2023-07-18 17:19:37 +0200mei(~mei@user/mei)
2023-07-18 17:20:45 +0200 <dolio> What I mean is that what Haskell does is fairly reasonable. It is not always a reasonable amount of effort to make everything verifiably total.
2023-07-18 17:21:31 +0200 <zzz> i'm more ok with head than with the fact that length returns and Int
2023-07-18 17:21:55 +0200 <zzz> s/and/an
2023-07-18 17:22:15 +0200 <danse-nr3> mapMaybe (\g -> (, length g) <$> head' g) . group . sort $ "abra" -- does not look that terrible to me
2023-07-18 17:22:31 +0200mango(~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 245 seconds)
2023-07-18 17:23:10 +0200 <int-e> > Seq.length $ iterate (\s -> s <> s) (Seq.singleton ()) !! 63
2023-07-18 17:23:12 +0200 <lambdabot> -9223372036854775808
2023-07-18 17:23:16 +0200 <glguy> danse-nr3: that would hide an actual bug if an empty list occurred
2023-07-18 17:23:46 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds)
2023-07-18 17:23:48 +0200 <danse-nr3> not if we are not interested in that
2023-07-18 17:24:03 +0200 <int-e> zzz: ^^ not a realistic issue for [a] but if you have O(log(n)) append it becomes a real problem
2023-07-18 17:24:41 +0200 <danse-nr3> writing the maybe handling at least makes one think about it, while having a type that tells nothing about a runtime error is not better
2023-07-18 17:24:43 +0200 <int-e> FSVO "real"
2023-07-18 17:25:01 +0200 <danse-nr3> following your reasoning, then let us have exceptions in maybe's type
2023-07-18 17:25:25 +0200 <int-e> > fromJust Nothing
2023-07-18 17:25:26 +0200 <lambdabot> *Exception: Maybe.fromJust: Nothing
2023-07-18 17:25:30 +0200 <dolio> In many real-world scenarios, I'd much rather have an exception than nonsense answers that make me trace through the code instead.
2023-07-18 17:26:12 +0200 <danse-nr3> but at least the coder was informed and decided to omit
2023-07-18 17:26:54 +0200 <danse-nr3> *let us have exceptions in `head` time i meant, but thanks int-e for finding another case
2023-07-18 17:27:12 +0200 <danse-nr3> % fromJust
2023-07-18 17:27:12 +0200 <yahb2> <interactive>:41:1: error: Variable not in scope: fromJust
2023-07-18 17:27:17 +0200 <danse-nr3> :t fromJust
2023-07-18 17:27:18 +0200 <lambdabot> Maybe a -> a
2023-07-18 17:27:21 +0200 <danse-nr3> magic
2023-07-18 17:27:37 +0200 <int-e> % import Data.Maybe
2023-07-18 17:27:37 +0200 <yahb2> <no output>
2023-07-18 17:27:42 +0200 <int-e> % :t fromJust
2023-07-18 17:27:42 +0200 <yahb2> fromJust :: GHC.Stack.Types.HasCallStack => Maybe a -> a
2023-07-18 17:28:03 +0200 <danse-nr3> nice, yet not an exception
2023-07-18 17:28:09 +0200 <danse-nr3> % :t head
2023-07-18 17:28:09 +0200 <yahb2> head :: [a] -> a
2023-07-18 17:28:20 +0200 <danse-nr3> clean and reassuring
2023-07-18 17:29:28 +0200 <danse-nr3> i mean, Maybe is also very useful to learn all the other stuff, it does not look that bad in a type
2023-07-18 17:29:44 +0200 <int-e> > case [] of x:_ -> x
2023-07-18 17:29:45 +0200 <lambdabot> *Exception: <interactive>:(3,1)-(4,22): Non-exhaustive patterns in case
2023-07-18 17:29:53 +0200 <int-e> > head []
2023-07-18 17:29:55 +0200 <lambdabot> *Exception: Prelude.head: empty list
2023-07-18 17:30:13 +0200 <danse-nr3> non-exhaustive patterns get caught by the compiler though
2023-07-18 17:30:39 +0200mauke(~mauke@user/mauke)
2023-07-18 17:30:59 +0200 <int-e> fine, so you add an [] case... now what do you write there, knowing that it's impossible?
2023-07-18 17:31:25 +0200Square(~Square@user/square)
2023-07-18 17:31:31 +0200 <int-e> this is what `head` is for: extract the first element of a list that *you* statically know is non-empty.
2023-07-18 17:31:55 +0200 <int-e> no matter whether you can convince the compiler of the fact
2023-07-18 17:32:00 +0200 <glguy> danse-nr3: the total solution would be for int-e's example to have type like: data IdUnlessProgramError a = Bug ... | Result a
2023-07-18 17:32:13 +0200 <glguy> And then propagate that all the way to the top of main
2023-07-18 17:32:13 +0200 <int-e> which... you might either be unable to or simply unwilling to bother with
2023-07-18 17:32:48 +0200 <glguy> Rather than making up a value in the bug case
2023-07-18 17:33:47 +0200 <glguy> Which is a more-verbose version of what it does now
2023-07-18 17:34:03 +0200 <glguy> But it's certainly an option
2023-07-18 17:34:56 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 17:36:33 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-07-18 17:38:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection)
2023-07-18 17:38:16 +0200 <danse-nr3> yeah, i get it. Just my personal opinion then. After some years of experience, i basically never use `head`. From the perspective of a newcomer approaching the language, i think it would be a better path to be faced with the safer version. And about functions i use more rarely ... well. The point i made before, doc does not get as far as types do, i can just hope people generally like to write total functions
2023-07-18 17:39:27 +0200 <danse-nr3> % :t tail
2023-07-18 17:39:27 +0200 <yahb2> tail :: [a] -> [a]
2023-07-18 17:39:57 +0200 <danse-nr3> had some troubles with this once, did not expect it to work as it does, considering the types
2023-07-18 17:40:09 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-07-18 17:40:10 +0200 <danse-nr3> but am i right? Wait, i am not sure
2023-07-18 17:40:13 +0200 <int-e> > drop (-1) [1,2,3]
2023-07-18 17:40:14 +0200 <lambdabot> [1,2,3]
2023-07-18 17:40:17 +0200 <danse-nr3> % tail []
2023-07-18 17:40:17 +0200 <yahb2> *** Exception: Prelude.tail: empty list
2023-07-18 17:40:28 +0200 <int-e> > drop 1 []
2023-07-18 17:40:30 +0200 <lambdabot> []
2023-07-18 17:42:14 +0200azy(~azy@78-131-74-116.pool.digikabel.hu) (Ping timeout: 246 seconds)
2023-07-18 17:42:19 +0200 <int-e> Hmm what does Lisp do for (car nil) and (cdr nil)... return nil? Which would be an option for `tail` of course.
2023-07-18 17:42:49 +0200 <int-e> But `tail` is a counterpart of `head` and it would *also* be strange if one was defined when the other isn't.
2023-07-18 17:43:15 +0200 <mniip> fromJustMaybe :: Maybe a -> Maybe a
2023-07-18 17:43:18 +0200 <danse-nr3> nah, they have different types
2023-07-18 17:43:20 +0200 <int-e> mniip: :)
2023-07-18 17:43:21 +0200 <danse-nr3> :t last
2023-07-18 17:43:22 +0200 <lambdabot> [a] -> a
2023-07-18 17:43:28 +0200 <danse-nr3> this is the counterpart to head
2023-07-18 17:43:34 +0200 <geekosaur> disagree
2023-07-18 17:43:50 +0200 <geekosaur> head and tail are deconstructors for (:)
2023-07-18 17:43:54 +0200 <mniip> danse-nr3, it's the counterpart to head in the sense that `data [] a = [] | (:) { head :: a, tail :: [] a }`
2023-07-18 17:43:59 +0200 <geekosaur> init and last are similarly paired
2023-07-18 17:44:03 +0200azy(~azy@178-164-235-203.pool.digikabel.hu)
2023-07-18 17:45:35 +0200 <int-e> funny how odd `[] a` looks
2023-07-18 17:45:36 +0200 <danse-nr3> alright ... anyways, Maybe is a nice type, i do not think it would scare newcomers. Experts that keep static information avoiding type safety probably also know an answer to the awkwardness of NonEmpty
2023-07-18 17:46:38 +0200 <int-e> head doesn't violate type safety
2023-07-18 17:47:04 +0200 <int-e> unsafeCoerce does; it can cause compiled code to mistake values for pointers and crash, among other things
2023-07-18 17:47:12 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-07-18 17:48:13 +0200 <mauke> int-e: common lisp returns NIL for both
2023-07-18 17:48:46 +0200 <danse-nr3> maybe this is what i need to understand, how is `head` type safe. No exceptions in the type nor any sign it could fail. And if we consider stuff like `tail`, one should work with imagination
2023-07-18 17:48:54 +0200 <int-e> The semantics of Haskell isn't restricted to total functions.
2023-07-18 17:49:09 +0200 <mauke> there are errors other than type errors
2023-07-18 17:49:17 +0200 <int-e> If you only want total functions there are other languages for that. (Idris? Agda?)
2023-07-18 17:50:04 +0200 <geekosaur> haskell's type system doesn't encompass exceptions, either
2023-07-18 17:50:04 +0200 <jade[m]> imo there isn't an objective truth or answer to this, but just different views on the same problem
2023-07-18 17:50:11 +0200berberman_(~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-18 17:50:12 +0200 <jade[m]> I don't really see a problem tbh
2023-07-18 17:50:23 +0200 <geekosaur> neither do I
2023-07-18 17:50:33 +0200berberman(~berberman@user/berberman)
2023-07-18 17:50:43 +0200 <danse-nr3> neither do I, i just see an opportunity to improve
2023-07-18 17:51:20 +0200 <geekosaur> you'd be better off starting from idris imo
2023-07-18 17:51:45 +0200 <mniip> haskell doesn't have a termination checker so your types are littered with non-termination bottoms anyway
2023-07-18 17:51:56 +0200 <int-e> it's a matter of pragmatism to me; if your language only has total functions then you have to prove termination all the time and that gets tedious quickly. Or, I guess, you use the codata escape hatch that these languages tend to have.
2023-07-18 17:52:21 +0200mechap(~mechap@user/mechap) (Quit: WeeChat 4.0.2)
2023-07-18 17:52:28 +0200 <mniip> seems reasonable to extend the notion of bottom to one that fails eagerly
2023-07-18 17:52:45 +0200 <int-e> (codata Result a = Tick (Result a) | Return a)
2023-07-18 17:53:26 +0200 <mniip> does Result work out as a monad?
2023-07-18 17:53:34 +0200 <int-e> (That's what i mean by the "codata escape hatch")
2023-07-18 17:53:54 +0200 <mniip> cool. Didn't know if there was a principled approach
2023-07-18 17:53:55 +0200 <int-e> mniip: I think it does, at least morally (where you identify x and Tick x))
2023-07-18 17:54:06 +0200CiaoSen(~Jura@2a05:5800:299:1a00:664b:f0ff:fe37:9ef) (Ping timeout: 260 seconds)
2023-07-18 17:54:11 +0200azy(~azy@178-164-235-203.pool.digikabel.hu) (Ping timeout: 245 seconds)
2023-07-18 17:54:31 +0200danse-nr3_(~francesco@151.43.156.73)
2023-07-18 17:54:31 +0200danse-nr3_(~francesco@151.43.156.73) (Remote host closed the connection)
2023-07-18 17:54:41 +0200 <mniip> been thinking about self-hosted proof assistants
2023-07-18 17:54:58 +0200 <int-e> mniip: Note, I made the names up on the spot; there may be standard names that are different.
2023-07-18 17:55:02 +0200 <mniip> and a proof assistant needs termination checking, yet a typechecker needs to do reductions which may fail to terminate
2023-07-18 17:55:26 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds)
2023-07-18 17:55:52 +0200 <int-e> One data point is that IIRC, vector's stream fusion uses `Skip` for what I called `Tick` there.
2023-07-18 17:55:52 +0200azy(~azy@80-95-82-46.pool.digikabel.hu)
2023-07-18 17:56:23 +0200 <mniip> I don't suppose you get `fix :: (a -> Result a) -> Result a`
2023-07-18 17:57:12 +0200danse-nr3(~francesco@151.43.142.135) (Ping timeout: 250 seconds)
2023-07-18 17:57:55 +0200 <int-e> mniip: Right, you don't. You do get undefined :: Result a though, so you can bootstrap lazy evaluation and `fix` if you percolate `Result` into all your types.
2023-07-18 17:58:14 +0200 <mauke> "that's just Identity with extra steps!"
2023-07-18 17:58:22 +0200 <mniip> no it is not!
2023-07-18 17:58:43 +0200 <mniip> it records the number of steps taken, which may be infinite (coinductively)
2023-07-18 17:58:43 +0200 <int-e> mniip: Now that I wrote this out loud it sounds horrible.
2023-07-18 18:00:45 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285)
2023-07-18 18:01:14 +0200 <int-e> This has a similar flavor to Kleene's recursion theorem.
2023-07-18 18:01:18 +0200 <mauke> as I said: extra steps
2023-07-18 18:02:16 +0200 <int-e> Anyway if you just use a non-total language all this becomes easy ;-)
2023-07-18 18:02:44 +0200josias(~mottmatri@2001:470:69fc:105::b6c) (Remote host closed the connection)
2023-07-18 18:03:06 +0200sagax(~sagax_nb@user/sagax)
2023-07-18 18:11:13 +0200rainbyte(~rainbyte@181.31.239.226) (Remote host closed the connection)
2023-07-18 18:11:46 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-07-18 18:16:24 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-07-18 18:18:24 +0200ubert(~Thunderbi@77.119.175.12.wireless.dyn.drei.com) (Quit: ubert)
2023-07-18 18:20:32 +0200ubert1(~Thunderbi@77.119.175.12.wireless.dyn.drei.com) (Remote host closed the connection)
2023-07-18 18:21:01 +0200ubert(~Thunderbi@77.119.175.12.wireless.dyn.drei.com)
2023-07-18 18:21:58 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
2023-07-18 18:27:28 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection)
2023-07-18 18:28:04 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-07-18 18:28:33 +0200fendor(~fendor@2a02:8388:1640:be00:1f28:32b1:54ac:a932) (Remote host closed the connection)
2023-07-18 18:28:57 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285)
2023-07-18 18:36:16 +0200azy(~azy@80-95-82-46.pool.digikabel.hu) (Ping timeout: 245 seconds)
2023-07-18 18:37:46 +0200kitzman(~kitzman@user/dekenevs) (Quit: C-x C-c)
2023-07-18 18:38:12 +0200azy(~azy@92-249-193-183.pool.digikabel.hu)
2023-07-18 18:38:39 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 18:42:19 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection)
2023-07-18 18:42:34 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 18:46:41 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-07-18 18:52:52 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection)
2023-07-18 18:56:35 +0200kuribas(~user@ptr-17d51emwh8tjgyi2pjo.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-07-18 19:02:06 +0200kitzman(~kitzman@user/dekenevs)
2023-07-18 19:02:25 +0200azy(~azy@92-249-193-183.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-07-18 19:02:27 +0200berberman(~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-18 19:02:48 +0200berberman(~berberman@user/berberman)
2023-07-18 19:04:18 +0200azy(~azy@178-164-206-51.pool.digikabel.hu)
2023-07-18 19:07:12 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-07-18 19:11:35 +0200zmt00(~zmt00@user/zmt00)
2023-07-18 19:16:24 +0200trev(~trev@user/trev) (Quit: trev)
2023-07-18 19:18:48 +0200danse-nr3(~francesco@151.43.156.114)
2023-07-18 19:19:30 +0200nick4(~nick@50.86.118.19)
2023-07-18 19:22:50 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-07-18 19:25:57 +0200nick4(~nick@50.86.118.19) (Ping timeout: 258 seconds)
2023-07-18 19:26:12 +0200zmt01(~zmt00@user/zmt00)
2023-07-18 19:28:17 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 246 seconds)
2023-07-18 19:31:03 +0200swamp_(~zmt00@user/zmt00)
2023-07-18 19:32:37 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 19:33:56 +0200zmt00(~zmt00@user/zmt00)
2023-07-18 19:34:00 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 258 seconds)
2023-07-18 19:34:08 +0200zmt00(~zmt00@user/zmt00) (Remote host closed the connection)
2023-07-18 19:34:55 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1)
2023-07-18 19:35:08 +0200titibandit(~titibandi@user/titibandit)
2023-07-18 19:36:33 +0200swamp_(~zmt00@user/zmt00) (Ping timeout: 246 seconds)
2023-07-18 19:36:52 +0200azy(~azy@178-164-206-51.pool.digikabel.hu) (Ping timeout: 250 seconds)
2023-07-18 19:37:34 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-07-18 19:38:26 +0200azy(~azy@213-197-76-73.pool.digikabel.hu)
2023-07-18 19:41:44 +0200bilegeek(~bilegeek@2600:1008:b030:17ef:4afb:621d:1786:70ad)
2023-07-18 19:47:02 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 245 seconds)
2023-07-18 19:47:08 +0200 <danse-nr3> sorry, had to go
2023-07-18 19:47:39 +0200 <danse-nr3> geekosaur, you are right, i never used exceptions and i thought that they leave track in the types :-/
2023-07-18 19:56:03 +0200 <davean> There are systems for tracking potential exceptions in the types but no one really uses them
2023-07-18 19:56:32 +0200chele(~chele@user/chele) (Remote host closed the connection)
2023-07-18 19:57:23 +0200 <davean> https://hackage.haskell.org/package/control-monad-exception as an example, danse-nr3, it just can't can't possibly track all exceptions.
2023-07-18 20:00:27 +0200 <danse-nr3> cheers
2023-07-18 20:03:35 +0200 <davean> hat you can do and what is wise to do, or what you can do while still having other beneficial properties are all different things.
2023-07-18 20:03:59 +0200 <davean> and do remember that you run into fundimental issues about computation and completeness when you try to catch all the edge cases.
2023-07-18 20:04:22 +0200 <davean> (So there will be programs you can not write under some restrictions)
2023-07-18 20:05:23 +0200ripspin(~chatzilla@1.145.144.100) (Remote host closed the connection)
2023-07-18 20:07:15 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Remote host closed the connection)
2023-07-18 20:07:17 +0200 <danse-nr3> yeah well i was mostly fighting for a safer `head`, nothing too impossible :)
2023-07-18 20:07:21 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection)
2023-07-18 20:08:31 +0200 <davean> danse-nr3: lots of safer heads, take a look at the 'safe' package
2023-07-18 20:08:35 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285)
2023-07-18 20:08:39 +0200 <davean> also look at NonEmpty
2023-07-18 20:09:08 +0200azy(~azy@213-197-76-73.pool.digikabel.hu) (Ping timeout: 272 seconds)
2023-07-18 20:10:24 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-07-18 20:10:32 +0200azy(~azy@87-97-2-213.pool.digikabel.hu)
2023-07-18 20:11:06 +0200 <davean> I actually use head a ton myself. For various reasons and various ways. I don't think its a bad thing to have handy but it does get a lot of hate for some good reasons.
2023-07-18 20:11:23 +0200alexbiehl(~alexbiehl@2a02:8108:323f:ca14:a9de:be07:3a81:7285) (Remote host closed the connection)
2023-07-18 20:14:08 +0200mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 246 seconds)
2023-07-18 20:16:06 +0200mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2023-07-18 20:24:58 +0200 <monochrom> I am OK with head too in e.g. map head . group
2023-07-18 20:28:24 +0200 <davean> Right
2023-07-18 20:28:36 +0200 <davean> Spending code to cover cases that can't exist is a waste.
2023-07-18 20:29:09 +0200 <davean> is it locally obvious thats not going to happen? Good
2023-07-18 20:29:30 +0200 <davean> Now one could say like NonEmpty should solve this, but we'd need an entire new prelude for that to be true
2023-07-18 20:29:52 +0200 <monochrom> I feel like people are generally very religious about coding guidelines including "split 'f x = g x' into 4 lines to minimize diff when you change something" and "don't use head".
2023-07-18 20:30:50 +0200 <davean> Yah and my religion is that that is bad
2023-07-18 20:31:23 +0200 <mniip> I am strongly of the opinion that group should have a different type
2023-07-18 20:31:45 +0200 <davean> well thats the NonEmpty claim, right?
2023-07-18 20:31:55 +0200 <mniip> group is not in Prelude
2023-07-18 20:32:01 +0200 <mniip> and NonEmpty is otherwise in base, so
2023-07-18 20:32:42 +0200 <mniip> :t Data.List.NonEmpty.group -- we do have
2023-07-18 20:32:43 +0200 <lambdabot> (Foldable f, Eq a) => f a -> [NonEmpty a]
2023-07-18 20:33:45 +0200 <davean> yes but that doesn't map to all the other things in Prelude that are designed for list, and the libraries that are based off that.
2023-07-18 20:33:52 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-07-18 20:33:54 +0200 <davean> Which was my point above
2023-07-18 20:34:09 +0200 <davean> If I only had to work with my code I could do that everywhere
2023-07-18 20:36:53 +0200danse-nr3(~francesco@151.43.156.114) (Ping timeout: 246 seconds)
2023-07-18 20:38:42 +0200azy(~azy@87-97-2-213.pool.digikabel.hu) (Ping timeout: 245 seconds)
2023-07-18 20:39:52 +0200axel_(~axel@ipbcc0c12d.dynamic.kabel-deutschland.de)
2023-07-18 20:40:39 +0200azy(~azy@87-97-13-52.pool.digikabel.hu)
2023-07-18 20:43:24 +0200axel_(~axel@ipbcc0c12d.dynamic.kabel-deutschland.de) (Client Quit)
2023-07-18 20:44:00 +0200danse-nr3(~francesco@151.43.156.114)
2023-07-18 20:44:08 +0200danse-nr3(~francesco@151.43.156.114) (Remote host closed the connection)
2023-07-18 20:44:41 +0200danse-nr3(~francesco@151.43.156.114)
2023-07-18 20:47:23 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-07-18 20:49:40 +0200 <danse-nr3> davean, yeah i know about `safe`, other preludes and NonEmpty, but the most accessible default behaviour matters. Anyways, not a big deal
2023-07-18 20:51:58 +0200 <yushyin> so, pattern matching
2023-07-18 20:52:12 +0200 <danse-nr3> ?
2023-07-18 20:52:44 +0200 <monochrom> I like pattern matching.
2023-07-18 20:52:56 +0200 <danse-nr3> yeah, it is great
2023-07-18 20:53:22 +0200 <monochrom> http://www.vex.net/~trebla/haskell/crossroad.xhtml is how much I like pattern matching.
2023-07-18 20:56:06 +0200alexbiehl(~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de)
2023-07-18 20:58:09 +0200alexbiehl(~alexbiehl@ip4d14fda4.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2023-07-18 20:58:59 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Remote host closed the connection)
2023-07-18 20:59:14 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-07-18 21:01:56 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-07-18 21:02:23 +0200Inst(~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) (Remote host closed the connection)
2023-07-18 21:02:50 +0200Inst(~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345)
2023-07-18 21:06:33 +0200mango(~finn@176-151-21-224.abo.bbox.fr)
2023-07-18 21:07:08 +0200Guest8732(~finn@176-151-21-224.abo.bbox.fr)
2023-07-18 21:07:45 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0)
2023-07-18 21:09:55 +0200trev(~trev@user/trev)
2023-07-18 21:10:00 +0200mechap(~mechap@user/mechap)
2023-07-18 21:12:02 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9801:f948:f484:2fb0) (Ping timeout: 246 seconds)
2023-07-18 21:12:35 +0200azy(~azy@87-97-13-52.pool.digikabel.hu) (Ping timeout: 264 seconds)
2023-07-18 21:13:43 +0200bilegeek(~bilegeek@2600:1008:b030:17ef:4afb:621d:1786:70ad) (Quit: Leaving)
2023-07-18 21:13:48 +0200azy(~azy@178-164-171-242.pool.digikabel.hu)
2023-07-18 21:20:04 +0200mango(~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 272 seconds)
2023-07-18 21:20:46 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-18 21:21:48 +0200nick4(~nick@2600:8807:9084:7800:7d9d:fc42:d20d:9e35)
2023-07-18 21:24:44 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-18 21:25:40 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
2023-07-18 21:26:15 +0200trev(~trev@user/trev) (Quit: trev)
2023-07-18 21:28:08 +0200hdggxin(~hdggxin@122.175.41.19) (Ping timeout: 246 seconds)
2023-07-18 21:30:17 +0200Everything(~Everythin@static.208.206.21.65.clients.your-server.de) (Quit: leaving)
2023-07-18 21:42:29 +0200Guest8732(~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 246 seconds)
2023-07-18 21:42:52 +0200azy(~azy@178-164-171-242.pool.digikabel.hu) (Ping timeout: 272 seconds)
2023-07-18 21:43:52 +0200azy(~azy@80-95-82-10.pool.digikabel.hu)
2023-07-18 21:45:35 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 264 seconds)
2023-07-18 21:54:45 +0200danse-nr3_(~francesco@151.43.135.188)
2023-07-18 21:57:02 +0200danse-nr3(~francesco@151.43.156.114) (Ping timeout: 246 seconds)
2023-07-18 22:07:49 +0200 <jade[m]> is there a way to ask hoogle for functions that return some Foo regardless of the args
2023-07-18 22:11:20 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-07-18 22:12:06 +0200azy(~azy@80-95-82-10.pool.digikabel.hu) (Ping timeout: 245 seconds)
2023-07-18 22:12:15 +0200 <danse-nr3_> lowercase letters seem to work, but you need to guess or try out different numbers of args
2023-07-18 22:13:58 +0200azy(~azy@87-97-13-59.pool.digikabel.hu)
2023-07-18 22:14:22 +0200 <jade[m]> all I get for that is unsafeCoerce and friends
2023-07-18 22:16:47 +0200ubert(~Thunderbi@77.119.175.12.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
2023-07-18 22:18:10 +0200 <danse-nr3_> also for me those are the first results. The other results matching my type are at the bottom
2023-07-18 22:22:23 +0200danse-nr3_(~francesco@151.43.135.188) (Quit: Leaving)
2023-07-18 22:26:02 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-18 22:29:47 +0200ai5lk(~ai5lk@209-188-121-236.taosnet.com)
2023-07-18 22:31:24 +0200titibandit(~titibandi@user/titibandit)
2023-07-18 22:34:44 +0200Inst(~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345) (Remote host closed the connection)
2023-07-18 22:35:02 +0200Guest8732(~finn@176-151-21-224.abo.bbox.fr)
2023-07-18 22:35:03 +0200Inst(~Inst@2601:6c4:4081:2fc0:c949:b3e0:9b04:3345)
2023-07-18 22:37:20 +0200fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-18 22:38:36 +0200azy(~azy@87-97-13-59.pool.digikabel.hu) (Ping timeout: 272 seconds)
2023-07-18 22:39:57 +0200azy(~azy@94-21-33-111.pool.digikabel.hu)
2023-07-18 22:41:43 +0200thegeekinside(~thegeekin@189.217.90.138) (Read error: Connection reset by peer)
2023-07-18 22:52:25 +0200hdggxin(~hdggxin@122.175.41.19)
2023-07-18 22:54:26 +0200azy(~azy@94-21-33-111.pool.digikabel.hu) (Ping timeout: 272 seconds)
2023-07-18 22:55:48 +0200azy(~azy@77-234-92-243.pool.digikabel.hu)
2023-07-18 22:59:43 +0200ai5lk(~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8)
2023-07-18 23:07:16 +0200 <hippoid> is it possible to check that a function returns undefined? I'm trying to figure out how to write a unit test for that with tasty. example -- https://termbin.com/pjv5
2023-07-18 23:09:18 +0200 <Rembane> hippoid: There's quite a bit of discussion regarding this here: https://stackoverflow.com/questions/9392129/detect-bottom-value-in-haskell
2023-07-18 23:09:55 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-18 23:09:59 +0200 <Rembane> hippoid: The short answer is: use Maybe or Either instead, because then you can see what's happening in the type signature.
2023-07-18 23:11:01 +0200 <davean> ttps://hackage.haskell.org/package/ChasingBottoms might help here though
2023-07-18 23:11:08 +0200 <hippoid> Rembane: ok, i understand your point about Maybe or Either. this is more an academic exercise, opposed to production code, to see if it's possible.
2023-07-18 23:11:13 +0200 <glguy> I've been using hspec and it has stuff like this https://hackage.haskell.org/package/hspec-expectations-0.8.3/docs/Test-Hspec-Expectations.html#g:2
2023-07-18 23:11:36 +0200 <monochrom> IMO there are only two rational specifications for myFunction:
2023-07-18 23:12:19 +0200 <davean> hippoid: remember, everything that isn't defined, no matter how its not defined, is bottom
2023-07-18 23:12:32 +0200 <monochrom> 1. If myFunction is allowed, but not required, to be a partial function, then requiring it to give bottom is over-specification, you should just leave it open instead.
2023-07-18 23:12:33 +0200 <davean> so there can't be any general test because bottom isn't anything specific.
2023-07-18 23:12:51 +0200 <monochrom> 2. Else, what everyone is saying, use Maybe.
2023-07-18 23:13:16 +0200 <mauke> evalute foo `catch` \e -> ...
2023-07-18 23:13:37 +0200 <Rembane> hippoid: No worries, is TDD involved in this question in some way?
2023-07-18 23:13:40 +0200 <davean> mauke: that checks for exceptions.
2023-07-18 23:14:03 +0200 <mauke> yes?
2023-07-18 23:14:09 +0200 <monochrom> Unfortunately, undefined manifests as an exception, too.
2023-07-18 23:14:14 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-07-18 23:14:38 +0200 <monochrom> ChasingBottoms probably does exactly that.
2023-07-18 23:14:40 +0200 <mauke> @src undefined
2023-07-18 23:14:41 +0200 <lambdabot> undefined = error "Prelude.undefined"
2023-07-18 23:14:58 +0200 <glguy> https://gist.github.com/glguy/61ec83f6bebbe2bc39837b6390ea49dc
2023-07-18 23:15:01 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 245 seconds)
2023-07-18 23:15:31 +0200 <hippoid> Rembane: no not really. I'm working through the book Haskell From First Principles, and have decided to write test suites as I go along to better acquaint myself with cabal and Tasty. One set of exercises asks the reader to predict whether an expression will return undefined or not. The exercises are related to the discussion of normal form and weak head normal form.
2023-07-18 23:15:45 +0200 <glguy> hippoid: that gist shows an example of what I think you asked for with example output
2023-07-18 23:15:51 +0200 <monochrom> Correction: ChasingBottom is that on steroid.
2023-07-18 23:16:01 +0200 <mauke> glguy: nice
2023-07-18 23:16:14 +0200 <monochrom> "evaluate the thing under a timeout `catch` \e -> case e of ...."
2023-07-18 23:16:42 +0200 <hippoid> glguy: thank you. i wish hunit had something like that
2023-07-18 23:17:01 +0200 <glguy> it probably does, I've just been using hspec lately
2023-07-18 23:17:03 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-07-18 23:17:29 +0200 <monochrom> I think the point of the exercise is to test your understanding, not computer's understanding.
2023-07-18 23:17:40 +0200 <davean> hippoid: its haaskell, most of these things can use each other's too.
2023-07-18 23:18:05 +0200 <glguy> hippoid: you can use evaluate and catch yourself and then assert accordingly
2023-07-18 23:18:23 +0200 <glguy> In this case you probably want `try` instead of `catch` , but it's not a big difference
2023-07-18 23:19:19 +0200 <monochrom> Because by a Chinese Room argument, the computer already understands this. There is no need to test it.
2023-07-18 23:19:55 +0200 <monochrom> The "intelligent" human, however...
2023-07-18 23:20:32 +0200 <monochrom> And for the purpose of using the computer to check your answer, the REPL is sufficient. KISS.
2023-07-18 23:20:51 +0200 <Rembane> hippoid: Cool!
2023-07-18 23:20:52 +0200 <mauke> I will not kiss the computer
2023-07-18 23:21:00 +0200 <monochrom> Example. I predict that head [] = 4, not bottom.
2023-07-18 23:21:02 +0200 <monochrom> > head []
2023-07-18 23:21:03 +0200 <lambdabot> *Exception: Prelude.head: empty list
2023-07-18 23:21:18 +0200 <mauke> the more interesting question is why head [] is not a type error
2023-07-18 23:21:26 +0200 <monochrom> That says my prediction was wrong. There is nothing to catch.
2023-07-18 23:21:59 +0200 <davean> mauke: what if we put it in a very human like case?
2023-07-18 23:22:19 +0200 <dolio> Build a model of Haskell in Agda, and prove that your function returns undefined.
2023-07-18 23:22:23 +0200 <monochrom> Then you're just kissing the case! >:D
2023-07-18 23:22:36 +0200 <mauke> what, like a pacemaker?
2023-07-18 23:22:43 +0200 <monochrom> hahahaha
2023-07-18 23:23:25 +0200 <monochrom> I prefer s/Agda/Lean/ but yeah.
2023-07-18 23:23:36 +0200 <dolio> Eh.
2023-07-18 23:25:28 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 272 seconds)
2023-07-18 23:27:37 +0200 <monochrom> I suppose you also want the irony of Haskell expressed in Agda but Agda is expressed in Haskell. :)
2023-07-18 23:28:05 +0200 <dolio> Oh, that's true.
2023-07-18 23:32:05 +0200cheater_(~Username@user/cheater)
2023-07-18 23:34:11 +0200cheater(~Username@user/cheater) (Ping timeout: 245 seconds)
2023-07-18 23:34:20 +0200cheater_cheater
2023-07-18 23:35:57 +0200Yumemi_(~Yumemi@chamoin.net)
2023-07-18 23:38:50 +0200thelounge793(~thelounge@2a05:f480:1400:24b2:5400:4ff:fe76:a8f3)
2023-07-18 23:38:50 +0200Yumemi(~Yumemi@chamoin.net) (Ping timeout: 260 seconds)
2023-07-18 23:41:08 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-07-18 23:44:56 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-07-18 23:49:14 +0200justsomeguy(~justsomeg@user/justsomeguy) (WeeChat 3.6)
2023-07-18 23:50:12 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-07-18 23:52:16 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-07-18 23:54:09 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-07-18 23:55:31 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-07-18 23:55:52 +0200jonathan(~jonathan@c83-252-3-92.bredband.tele2.se) (Ping timeout: 272 seconds)
2023-07-18 23:57:52 +0200mei(~mei@user/mei)