2023/07/29

2023-07-29 00:06:29 +0200lyxia(~lyxia@poisson.chat) (Quit: WeeChat 3.7)
2023-07-29 00:07:05 +0200gurkenglas(~gurkengla@dynamic-046-114-089-015.46.114.pool.telefonica.de) (Ping timeout: 246 seconds)
2023-07-29 00:07:18 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Remote host closed the connection)
2023-07-29 00:08:23 +0200Guest8558(~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 264 seconds)
2023-07-29 00:13:01 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-07-29 00:14:44 +0200thegeekinside(~thegeekin@189.217.90.138) (Read error: Connection reset by peer)
2023-07-29 00:16:21 +0200mango(~finn@2001:861:5863:3d50:38dd:bfcb:d7f1:6ae4) (Ping timeout: 260 seconds)
2023-07-29 00:17:48 +0200forell(~forell@user/forell)
2023-07-29 00:18:10 +0200phma(~phma@2001:5b0:210f:78d8:de61:1bc2:fcbd:591a) (Read error: Connection reset by peer)
2023-07-29 00:19:16 +0200phma(phma@2001:5b0:211c:f748:3478:76f9:d3a9:cc0a)
2023-07-29 00:22:52 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2023-07-29 00:24:32 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 245 seconds)
2023-07-29 00:27:52 +0200acidjnk(~acidjnk@p200300d6e7072f7488c486b520f19958.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-07-29 00:29:36 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-07-29 00:30:26 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-07-29 00:32:02 +0200mei(~mei@user/mei)
2023-07-29 00:35:56 +0200 <hololeap> I've got a broad question of how to parse a text file with a parser combinator library
2023-07-29 00:36:40 +0200 <hololeap> say there are 3 types of lines, 1) header lines which have some obvious structure 2) relevant lines that we want to gather 3) irrelevant lines that we want to ignore
2023-07-29 00:37:19 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 00:37:24 +0200 <hololeap> when a header line is reached, it should scan the lines below it until it reaches another header line. of the lines scanned, it makes a list of the relevant lines and stores them in some data structure under the header
2023-07-29 00:37:44 +0200 <hololeap> what's the best/most obvious way to structure a parser like this?
2023-07-29 00:38:18 +0200 <jade[m]> that sounds fairly straightforward - how are header lines indicated?
2023-07-29 00:38:41 +0200 <hololeap> let's just say that the header lines look like: - header
2023-07-29 00:38:49 +0200 <hololeap> (that is a '-', a space, then a title)
2023-07-29 00:39:11 +0200 <hololeap> relevant lines start with 'http'
2023-07-29 00:41:16 +0200 <jade[m]> mhm, so you want a parser that uses many over another parser that first reads a header line and then accepts lines starting with http
2023-07-29 00:41:35 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 00:41:37 +0200 <jade[m]> what library are you using specifically?
2023-07-29 00:41:55 +0200 <hololeap> megaparsec
2023-07-29 00:42:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-07-29 00:44:16 +0200 <hololeap> I guess this kind of loosely translates into converting [Either HeaderName (Maybe URL)] to (Map HeaderName [URL])
2023-07-29 00:45:45 +0200 <geekosaur> (anyone else feel an urge to write it in awk?)
2023-07-29 00:45:47 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 245 seconds)
2023-07-29 00:46:29 +0200 <hololeap> so it would have to store the HeaderName somewhere temporary and gather the URLs until a new HeaderName is reached, at which point it writes the previous mess to the Map
2023-07-29 00:46:42 +0200 <hololeap> but I feel like that's a imperative way of thinking about it
2023-07-29 00:46:53 +0200 <jade[m]> it is indeed
2023-07-29 00:47:31 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds)
2023-07-29 00:48:29 +0200 <jade[m]> with a parser combinator you would rather parse a list of headers paired with a list of lines (via a record for example) and then put those in a map using one of the smart constructors for a Map
2023-07-29 00:48:57 +0200 <jade[m]> basically makeMap (many paragraph)
2023-07-29 00:49:32 +0200 <jade[m]> eh, you'd probably fmap that, sorry
2023-07-29 00:49:48 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2023-07-29 00:50:19 +0200 <hololeap> ok, even more absract: convert [Either a b] to [(a, [b])] so that each pair consists of an 'a' and a list of consecutive 'b's that follow it
2023-07-29 00:50:31 +0200gurkenglas(~gurkengla@dynamic-046-114-089-015.46.114.pool.telefonica.de)
2023-07-29 00:51:33 +0200 <hololeap> sorry, it seems like I start thinking about problems like these more clearly after I ask in irc :3
2023-07-29 00:51:41 +0200 <ncf> what do you do if the list starts with Right?
2023-07-29 00:52:02 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-29 00:52:02 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-29 00:52:02 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-29 00:52:09 +0200 <ncf> (answer: you raise a parse error. so this should happen in the parser)
2023-07-29 00:52:27 +0200 <hololeap> I was going to say, ignore the entries until the first Left
2023-07-29 00:55:57 +0200dibblego(~dibblego@haskell/developer/dibblego) (Excess Flood)
2023-07-29 00:57:33 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 00:58:44 +0200Xe(~cadey@tailscale/xe) (Ping timeout: 246 seconds)
2023-07-29 01:04:20 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 246 seconds)
2023-07-29 01:09:59 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2023-07-29 01:13:18 +0200forell(~forell@user/forell)
2023-07-29 01:17:17 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds)
2023-07-29 01:17:34 +0200wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2023-07-29 01:19:10 +0200wroathe(~wroathe@user/wroathe)
2023-07-29 01:19:15 +0200lyxia(~lyxia@poisson.chat)
2023-07-29 01:21:31 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-07-29 01:22:09 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 01:24:05 +0200byte(~byte@user/byte) (Quit: Quitting...)
2023-07-29 01:24:51 +0200mauke_(~mauke@user/mauke)
2023-07-29 01:25:40 +0200byte(~byte@user/byte)
2023-07-29 01:26:28 +0200mauke(~mauke@user/mauke) (Ping timeout: 246 seconds)
2023-07-29 01:26:28 +0200mauke_mauke
2023-07-29 01:26:41 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds)
2023-07-29 01:27:27 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 01:29:16 +0200gurkenglas(~gurkengla@dynamic-046-114-089-015.46.114.pool.telefonica.de) (Ping timeout: 258 seconds)
2023-07-29 01:30:01 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2023-07-29 01:31:51 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::c3b)
2023-07-29 01:32:07 +0200whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2023-07-29 01:32:47 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 01:38:02 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-07-29 01:43:09 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 01:43:41 +0200mvk(~mvk@2607:fea8:5c9a:a600::1c6d)
2023-07-29 01:48:54 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 244 seconds)
2023-07-29 01:57:09 +0200Xe(~cadey@tailscale/xe)
2023-07-29 02:00:17 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 02:02:20 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 244 seconds)
2023-07-29 02:03:17 +0200forell(~forell@user/forell) (Ping timeout: 245 seconds)
2023-07-29 02:04:10 +0200forell(~forell@user/forell)
2023-07-29 02:04:32 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 02:08:58 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 02:09:39 +0200lyxia(~lyxia@poisson.chat) (Quit: WeeChat 4.0.2)
2023-07-29 02:12:17 +0200travisb_(~travisb@2600:1700:7990:24e0:a3e2:8ce:b0a3:7ccb) (Remote host closed the connection)
2023-07-29 02:12:30 +0200travisb_(~travisb@2600:1700:7990:24e0:1a06:df99:987c:76cd)
2023-07-29 02:15:01 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 245 seconds)
2023-07-29 02:15:15 +0200mima(~mmh@ppp-212-114-180-85.dynamic.mnet-online.de) (Ping timeout: 244 seconds)
2023-07-29 02:23:10 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-07-29 02:28:19 +0200thegeekinside(~thegeekin@189.217.90.138) (Remote host closed the connection)
2023-07-29 02:32:28 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-29 02:32:48 +0200byte(~byte@user/byte) (Quit: Quitting...)
2023-07-29 02:33:08 +0200byte(~byte@user/byte)
2023-07-29 02:33:16 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 02:37:47 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 264 seconds)
2023-07-29 02:49:32 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-07-29 02:49:32 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-07-29 02:49:32 +0200wroathe(~wroathe@user/wroathe)
2023-07-29 02:50:49 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 02:53:46 +0200Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Ping timeout: 245 seconds)
2023-07-29 02:56:27 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 02:57:19 +0200Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
2023-07-29 03:02:06 +0200cstm[m](~cstmmatri@2001:470:69fc:105::2:f76f)
2023-07-29 03:02:33 +0200cstm[m]cstml[m]
2023-07-29 03:02:37 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 260 seconds)
2023-07-29 03:08:30 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2023-07-29 03:11:05 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-07-29 03:12:11 +0200forell(~forell@user/forell)
2023-07-29 03:13:30 +0200qqq(~qqq@92.43.167.61)
2023-07-29 03:17:12 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-07-29 03:24:29 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 244 seconds)
2023-07-29 03:30:35 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds)
2023-07-29 03:37:26 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl)
2023-07-29 03:41:00 +0200jsomedon(uid606872@id-606872.hampstead.irccloud.com)
2023-07-29 03:42:03 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2023-07-29 03:42:08 +0200jsomedon(uid606872@id-606872.hampstead.irccloud.com) ()
2023-07-29 03:49:48 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 244 seconds)
2023-07-29 03:54:58 +0200aforemny_(~aforemny@2001:9e8:6ce2:4f00:57f9:d120:56d4:9724) (Ping timeout: 244 seconds)
2023-07-29 03:55:13 +0200aforemny(~aforemny@i59F516EC.versanet.de)
2023-07-29 04:03:06 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 04:07:56 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 04:11:56 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1) (Ping timeout: 246 seconds)
2023-07-29 04:11:58 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2023-07-29 04:15:26 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 04:16:41 +0200td_(~td@i53870935.versanet.de) (Ping timeout: 245 seconds)
2023-07-29 04:18:47 +0200td_(~td@i5387090D.versanet.de)
2023-07-29 04:18:49 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-07-29 04:18:49 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-07-29 04:18:49 +0200finn_elijaFinnElija
2023-07-29 04:25:09 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1)
2023-07-29 04:35:36 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-07-29 04:35:54 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::c3b) (Ping timeout: 260 seconds)
2023-07-29 04:37:18 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::c3b)
2023-07-29 04:37:24 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 04:39:23 +0200razetime(~quassel@117.193.5.197)
2023-07-29 04:39:41 +0200forell(~forell@user/forell)
2023-07-29 04:39:42 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::c3b) (Client Quit)
2023-07-29 04:42:42 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2023-07-29 04:44:06 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2023-07-29 04:45:46 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2023-07-29 04:47:11 +0200seeg123456(~seeg12345@64.176.64.83)
2023-07-29 04:55:53 +0200ft(~ft@p3e9bc61e.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2023-07-29 04:57:28 +0200ft(~ft@p4fc2a59a.dip0.t-ipconnect.de)
2023-07-29 05:05:22 +0200forell(~forell@user/forell)
2023-07-29 05:12:14 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-07-29 05:17:38 +0200mvk(~mvk@2607:fea8:5c9a:a600::1c6d) (Ping timeout: 244 seconds)
2023-07-29 05:17:59 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 264 seconds)
2023-07-29 05:18:56 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
2023-07-29 05:21:03 +0200talismanick(~user@76.133.152.122)
2023-07-29 05:21:46 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1) (Ping timeout: 244 seconds)
2023-07-29 05:32:23 +0200aforemny_(~aforemny@i59F516E5.versanet.de)
2023-07-29 05:32:48 +0200aforemny(~aforemny@i59F516EC.versanet.de) (Ping timeout: 250 seconds)
2023-07-29 05:32:58 +0200razetime(~quassel@117.193.5.197) (Remote host closed the connection)
2023-07-29 05:33:13 +0200jero98772(~jero98772@2800:484:1d7f:5d36::1)
2023-07-29 05:35:57 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-29 05:37:28 +0200sm[i](~sm@2601:196:4b80:3a40:65:7c1f:38cd:576) (Quit: sm[i])
2023-07-29 05:40:49 +0200travisb_(~travisb@2600:1700:7990:24e0:1a06:df99:987c:76cd) (Remote host closed the connection)
2023-07-29 05:41:06 +0200travisb_(~travisb@2600:1700:7990:24e0:1a06:df99:987c:76cd)
2023-07-29 05:41:53 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 258 seconds)
2023-07-29 05:43:38 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-07-29 05:44:40 +0200hughjfchen92(~hughjfche@104.208.72.114)
2023-07-29 05:46:39 +0200hughjfchen92(~hughjfche@104.208.72.114) (Client Quit)
2023-07-29 05:48:22 +0200hughjfchen55(~hughjfche@104.208.72.114)
2023-07-29 05:50:01 +0200byte(~byte@user/byte) (Quit: Quitting...)
2023-07-29 05:50:39 +0200hughjfchen55(~hughjfche@104.208.72.114) (Client Quit)
2023-07-29 05:51:34 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 3.7.1)
2023-07-29 05:51:53 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2023-07-29 05:54:04 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 05:57:52 +0200forell(~forell@user/forell) (Ping timeout: 245 seconds)
2023-07-29 05:58:47 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 264 seconds)
2023-07-29 06:05:23 +0200xff0x(~xff0x@2405:6580:b080:900:f296:7c8e:ce20:8b85) (Ping timeout: 264 seconds)
2023-07-29 06:05:47 +0200xff0x(~xff0x@178.255.149.135)
2023-07-29 06:11:43 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 06:13:09 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 06:16:16 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 06:17:34 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 244 seconds)
2023-07-29 06:30:34 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 06:31:18 +0200xff0x(~xff0x@178.255.149.135) (Ping timeout: 250 seconds)
2023-07-29 06:32:19 +0200codaraxis__(~codaraxis@user/codaraxis)
2023-07-29 06:33:01 +0200xff0x(~xff0x@2405:6580:b080:900:3719:1952:9146:1372)
2023-07-29 06:35:31 +0200codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 246 seconds)
2023-07-29 06:37:14 +0200lambdap237(~lambdap@static.167.190.119.168.clients.your-server.de)
2023-07-29 06:37:26 +0200notzmv(~zmv@user/notzmv)
2023-07-29 06:39:21 +0200byte(~byte@user/byte)
2023-07-29 06:40:13 +0200lambdap237(~lambdap@static.167.190.119.168.clients.your-server.de) (Client Quit)
2023-07-29 06:40:34 +0200lambdap237(~lambdap@static.167.190.119.168.clients.your-server.de)
2023-07-29 06:49:30 +0200 <hgolden> hi byorgey: do you recommend a particular editor or IDE for doing CIS 194? I have tried VS Code, but it doesn't handle .lhs very well.
2023-07-29 06:51:12 +0200trev(~trev@user/trev)
2023-07-29 06:58:36 +0200internatetional(~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f)
2023-07-29 06:58:49 +0200internatetional(~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f) (Client Quit)
2023-07-29 07:00:41 +0200internatetional(~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f)
2023-07-29 07:01:53 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-07-29 07:04:56 +0200Pickchea(~private@user/pickchea)
2023-07-29 07:08:30 +0200flounders(~flounders@24.246.133.1)
2023-07-29 07:12:54 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-07-29 07:15:56 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 07:20:14 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-07-29 07:28:50 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-07-29 07:32:41 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-07-29 07:34:16 +0200cjb(~cjb@user/cjb)
2023-07-29 07:34:35 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 258 seconds)
2023-07-29 07:36:10 +0200simikando(~simikando@adsl-dyn-104.95-102-88.t-com.sk)
2023-07-29 07:38:04 +0200seeg123456(~seeg12345@64.176.64.83) ()
2023-07-29 07:46:11 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.2)
2023-07-29 07:48:00 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 07:48:38 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2023-07-29 07:52:36 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 258 seconds)
2023-07-29 08:00:47 +0200maerwald(~maerwald@user/maerwald) (Quit: gone)
2023-07-29 08:03:48 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) ()
2023-07-29 08:08:48 +0200simikando(~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Ping timeout: 250 seconds)
2023-07-29 08:17:27 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-07-29 08:20:01 +0200shapr(~user@2600:1700:c640:3100:54fd:7954:acad:5050) (Ping timeout: 244 seconds)
2023-07-29 08:21:16 +0200oneeyedalien(~oneeyedal@user/oneeyedalien)
2023-07-29 08:26:01 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl)
2023-07-29 08:27:58 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-29 08:30:33 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 258 seconds)
2023-07-29 08:30:40 +0200Feuermagier(~Feuermagi@user/feuermagier) (Read error: Connection reset by peer)
2023-07-29 08:37:59 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-07-29 08:41:41 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 08:46:55 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-07-29 08:47:55 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 244 seconds)
2023-07-29 09:02:01 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-07-29 09:02:13 +0200acidjnk(~acidjnk@p200300d6e7072f7488c486b520f19958.dip0.t-ipconnect.de)
2023-07-29 09:05:59 +0200simikando(~simikando@adsl-dyn-104.95-102-88.t-com.sk)
2023-07-29 09:07:33 +0200darchitect(~darchitec@2a00:23c6:3584:df01:ace3:21db:4a0c:96b1) (Ping timeout: 244 seconds)
2023-07-29 09:07:41 +0200flounders(~flounders@24.246.133.1) (Ping timeout: 246 seconds)
2023-07-29 09:09:42 +0200darchitect(~darchitec@2a00:23c6:3584:df01:eb12:93bf:8333:4511)
2023-07-29 09:11:07 +0200dobblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-29 09:11:07 +0200dobblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-29 09:11:07 +0200dobblego(~dibblego@haskell/developer/dibblego)
2023-07-29 09:11:40 +0200dobblegodibblego
2023-07-29 09:19:09 +0200forell(~forell@user/forell)
2023-07-29 09:22:32 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 244 seconds)
2023-07-29 09:28:26 +0200mima(~mmh@ppp-212-114-180-15.dynamic.mnet-online.de)
2023-07-29 09:30:42 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 250 seconds)
2023-07-29 09:31:02 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au)
2023-07-29 09:31:02 +0200dibblego(~dibblego@116-255-1-151.ip4.superloop.au) (Changing host)
2023-07-29 09:31:02 +0200dibblego(~dibblego@haskell/developer/dibblego)
2023-07-29 09:32:31 +0200sm[i](~sm@2601:196:4b80:3a40:65:7c1f:38cd:576)
2023-07-29 09:37:51 +0200misterfish(~misterfis@178.228.71.213)
2023-07-29 09:39:57 +0200mima(~mmh@ppp-212-114-180-15.dynamic.mnet-online.de) (Ping timeout: 245 seconds)
2023-07-29 09:45:07 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 09:48:22 +0200acidjnk(~acidjnk@p200300d6e7072f7488c486b520f19958.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2023-07-29 09:50:05 +0200mima(~mmh@ppp-212-114-180-15.dynamic.mnet-online.de)
2023-07-29 09:53:30 +0200mango(~finn@2001:861:5863:3d50:4ca1:d4a3:9017:987c)
2023-07-29 09:54:15 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 09:56:14 +0200gmg(~user@user/gehmehgeh)
2023-07-29 09:57:16 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 09:58:46 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 245 seconds)
2023-07-29 10:00:07 +0200 <sm> ghcid I'd guess
2023-07-29 10:00:09 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-29 10:01:28 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-07-29 10:01:47 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 258 seconds)
2023-07-29 10:02:24 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-07-29 10:03:08 +0200simikando(~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Quit: Leaving)
2023-07-29 10:04:15 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-07-29 10:04:19 +0200mima(~mmh@ppp-212-114-180-15.dynamic.mnet-online.de) (Ping timeout: 260 seconds)
2023-07-29 10:04:57 +0200gmg(~user@user/gehmehgeh)
2023-07-29 10:05:14 +0200oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2023-07-29 10:05:40 +0200acidjnk(~acidjnk@p200300d6e7072f74a48c7e6a1dd36c06.dip0.t-ipconnect.de)
2023-07-29 10:05:51 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-07-29 10:05:56 +0200ubert(~Thunderbi@178.165.173.150.wireless.dyn.drei.com) (Ping timeout: 244 seconds)
2023-07-29 10:12:58 +0200flounders(~flounders@24.246.133.1)
2023-07-29 10:14:04 +0200fendor(~fendor@2a02:8388:1640:be00:1f28:32b1:54ac:a932)
2023-07-29 10:14:35 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 10:19:02 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:d004:e151:c029:6b7c) (Remote host closed the connection)
2023-07-29 10:19:07 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 245 seconds)
2023-07-29 10:20:24 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-07-29 10:20:50 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-07-29 10:24:49 +0200yangby(~secret@183.128.108.131) (Quit: Go out for a walk and buy a drink.)
2023-07-29 10:24:56 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Client Quit)
2023-07-29 10:25:17 +0200yangby(~secret@183.128.108.131)
2023-07-29 10:25:57 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-07-29 10:27:12 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-07-29 10:39:48 +0200 <Hecate> tomsmeding: 9.8.1-alpha1 is released :)
2023-07-29 10:41:04 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 10:45:19 +0200 <talismanick> Why is Haskell the only (major/living) language with typeclasses? Why do most other functional languages opt for ML-style modules?
2023-07-29 10:45:53 +0200 <talismanick> What alternatives are there? Generalizations/modifications of multiple dispatch?
2023-07-29 10:46:57 +0200 <talismanick> (well, Clean has typeclasses too, and it appears to be alive and well, living on quietly)
2023-07-29 10:47:21 +0200 <talismanick> And Purescript too, that's right
2023-07-29 10:47:32 +0200 <ncf> agda, idris and lean have typeclasses
2023-07-29 10:49:02 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 10:49:33 +0200zmt00(~zmt00@user/zmt00)
2023-07-29 10:49:36 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 245 seconds)
2023-07-29 10:49:51 +0200mango(~finn@2001:861:5863:3d50:4ca1:d4a3:9017:987c) (Ping timeout: 244 seconds)
2023-07-29 10:50:40 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 246 seconds)
2023-07-29 10:50:49 +0200mango(~finn@2001:861:5863:3d50:b609:8a33:4e07:703d)
2023-07-29 10:53:21 +0200misterfish(~misterfis@178.228.71.213) (Ping timeout: 245 seconds)
2023-07-29 10:58:50 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-07-29 11:00:13 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-07-29 11:00:13 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-07-29 11:00:13 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Read error: Connection reset by peer)
2023-07-29 11:00:13 +0200califax(~califax@user/califx) (Read error: Connection reset by peer)
2023-07-29 11:00:14 +0200ec(~ec@gateway/tor-sasl/ec) (Read error: Connection reset by peer)
2023-07-29 11:00:31 +0200end^(~end^@user/end/x-0094621) (Quit: You have been kicked for being idle)
2023-07-29 11:00:39 +0200califax(~califax@user/califx)
2023-07-29 11:00:40 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-07-29 11:00:43 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2023-07-29 11:00:47 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-07-29 11:01:05 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-07-29 11:01:05 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-07-29 11:01:07 +0200LenaDresner[m](~lenadresn@2001:470:69fc:105::3:3c53) (Remote host closed the connection)
2023-07-29 11:01:25 +0200ec(~ec@gateway/tor-sasl/ec)
2023-07-29 11:02:09 +0200rubin55(sid175221@id-175221.hampstead.irccloud.com) ()
2023-07-29 11:02:35 +0200rubin55(sid175221@id-175221.hampstead.irccloud.com)
2023-07-29 11:03:53 +0200sm[i](~sm@2601:196:4b80:3a40:65:7c1f:38cd:576) (Ping timeout: 258 seconds)
2023-07-29 11:04:02 +0200mango(~finn@2001:861:5863:3d50:b609:8a33:4e07:703d) (Ping timeout: 246 seconds)
2023-07-29 11:11:14 +0200Guest6684(~finn@rul16-h01-176-151-21-224.dsl.sta.abo.bbox.fr)
2023-07-29 11:11:34 +0200yangby(~secret@183.128.108.131) (Quit: Go out for a walk and buy a drink.)
2023-07-29 11:16:08 +0200flounders(~flounders@24.246.133.1) (Ping timeout: 246 seconds)
2023-07-29 11:17:01 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 11:17:58 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-07-29 11:18:21 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-07-29 11:19:32 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-07-29 11:20:22 +0200 <probie> Sometimes I wish that Haskell didn't have typeclasses. They're convenient, but they're also annoyingly global
2023-07-29 11:21:54 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2023-07-29 11:22:14 +0200 <probie> and you can't easily convert between them (e.g. if you have two dependencies that both define what is effectively the same typeclass)
2023-07-29 11:24:14 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2023-07-29 11:25:09 +0200 <probie> so if I want something like comonads, I can roll my own definition, but it will annoy everyone who wants to use my code, or I can use the definition from the comonads package (because that's what everyone uses), and now I've added a dependency on 10-15 packages when all I wanted was `class Functor w => Comonad w where { extend :: w a -> w (w a); extract :: w a -> a }`
2023-07-29 11:26:03 +0200 <jackdk> just make sure the dictionaries get laid out the same and do horrid reflection-style hacks
2023-07-29 11:33:46 +0200boxscape_(~boxscape_@81.191.27.107)
2023-07-29 11:34:39 +0200 <Hecate> probie: we need this https://idris2.readthedocs.io/en/latest/tutorial/interfaces.html#named-implementations
2023-07-29 11:37:53 +0200 <sm> happy for 9.8.1a1, but I don't see anything obvious I can use - how about you ?
2023-07-29 11:37:54 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 244 seconds)
2023-07-29 11:38:17 +0200 <probie> Hecate: That can cause headaches. If you've got something like `data BinarySearchTree a = Null | Node a (BinarySearchTree a) a` and `insert :: Ord a => a -> BinarySearchTree a -> BinarySearchTree a`, someone might call `insert @{foo} x (insert y someTree)`
2023-07-29 11:39:17 +0200 <probie> (this was the example given to me when I went on a rant ~10 years ago in this channel about how we don't need typeclasses)
2023-07-29 11:40:26 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-07-29 11:40:46 +0200 <boxscape_> hmm with dependent types you could have the compare function as index of the Set type
2023-07-29 11:42:36 +0200 <Hecate> probie: so… the problem is that someone may call insert with a specific implementation? Or that the implementation name is a variable?
2023-07-29 11:44:13 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2023-07-29 11:44:37 +0200 <probie> Hecate: the problem is that you don't have a guarantee that the same ordering is used for all inserts (of course, you can fix this by bundling the ordering function with the tree, but at that point you don't need typeclasses any more)
2023-07-29 11:44:53 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-07-29 11:45:46 +0200 <Hecate> probie: well, if you call a specific implementation that's because you don't care too much about cross-implementation guarantees, do you?
2023-07-29 11:46:11 +0200mc47(~mc47@xmonad/TheMC47)
2023-07-29 11:46:27 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-07-29 11:46:51 +0200mc47(~mc47@xmonad/TheMC47)
2023-07-29 11:47:12 +0200 <probie> It introduces a chance for a bug that could be annoying to track down (i.e what happens if I simply forgot to write `@{foo}` on the other insert)
2023-07-29 11:47:17 +0200 <apache> if the ordering is important wouldn't that warrant having it explicit in the type signature?
2023-07-29 11:47:50 +0200 <boxscape_> I feel like named instances don't really give you very much over newtypes though? it's a bit noisier syntactically, although the applying-via proposal would have helped
2023-07-29 11:48:10 +0200 <boxscape_> (I mean newtypes are noisier syntactically)
2023-07-29 11:52:47 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 264 seconds)
2023-07-29 11:55:25 +0200acidjnk_new(~acidjnk@p200300d6e7072f742c3c839711257708.dip0.t-ipconnect.de)
2023-07-29 11:56:59 +0200acidjnk(~acidjnk@p200300d6e7072f74a48c7e6a1dd36c06.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2023-07-29 11:57:37 +0200 <ncf> int-e: what's lambdabot's trustedPackages list? i'm getting "-XGeneralizedNewtypeDeriving is not allowed in Safe Haskell" when trying to import Control.Lens on my own instance
2023-07-29 11:58:23 +0200 <ncf> wait i asked you this a year ago let me grep my logs
2023-07-29 11:59:17 +0200 <Hecate> I need to deprecate Safe Haskell
2023-07-29 12:00:50 +0200 <ncf> oh, there wasn't a simple answer...
2023-07-29 12:02:15 +0200 <Rembane> ncf: This makes me curious, what's the complex answer?
2023-07-29 12:02:20 +0200Guest6684(~finn@rul16-h01-176-151-21-224.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
2023-07-29 12:03:09 +0200 <int-e> ncf: I also haven't actually gone through this process... in several years by now. I should do that again. But it's always been a mix of identifying a minimal set of packages to trust and patching those packages to actually use the right annotations.
2023-07-29 12:05:52 +0200 <ncf> Rembane: careful investigating and patching
2023-07-29 12:06:20 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 12:06:38 +0200 <ncf> maybe i'll try
2023-07-29 12:08:01 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-07-29 12:10:58 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 258 seconds)
2023-07-29 12:12:00 +0200 <Rembane> ncf: That sounds way too much like software development. Thanks.
2023-07-29 12:14:44 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-07-29 12:27:38 +0200danza(~francesco@151.37.214.222)
2023-07-29 12:29:21 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 12:38:15 +0200danza(~francesco@151.37.214.222) (Remote host closed the connection)
2023-07-29 12:38:34 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-29 12:38:56 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 12:39:33 +0200img(~img@user/img)
2023-07-29 12:39:49 +0200gurkenglas(~gurkengla@dynamic-046-114-092-082.46.114.pool.telefonica.de)
2023-07-29 12:40:35 +0200danza(~francesco@151.37.214.222)
2023-07-29 12:43:17 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 12:47:04 +0200codaraxis__(~codaraxis@user/codaraxis) (Quit: Leaving)
2023-07-29 12:56:42 +0200boxscape_(~boxscape_@81.191.27.107) (Quit: Connection closed)
2023-07-29 12:58:11 +0200boxscape_(~boxscape_@81.191.27.107)
2023-07-29 12:58:34 +0200acidjnk_new(~acidjnk@p200300d6e7072f742c3c839711257708.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2023-07-29 12:59:16 +0200danza_(~francesco@151.37.188.85)
2023-07-29 12:59:32 +0200danza(~francesco@151.37.214.222) (Read error: Connection reset by peer)
2023-07-29 12:59:56 +0200acidjnk(~acidjnk@p200300d6e7072f74a4887092d5a58bfa.dip0.t-ipconnect.de)
2023-07-29 13:08:15 +0200fweht(uid404746@id-404746.lymington.irccloud.com)
2023-07-29 13:12:29 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au) (Ping timeout: 246 seconds)
2023-07-29 13:13:49 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 13:14:13 +0200danza_(~francesco@151.37.188.85) (Ping timeout: 258 seconds)
2023-07-29 13:14:32 +0200yangby(~secret@183.128.108.131)
2023-07-29 13:18:34 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 13:19:59 +0200arahael_(~arahael@115-64-199-191.tpgi.com.au)
2023-07-29 13:27:32 +0200arahael(~arahael@115-64-199-191.tpgi.com.au) (Remote host closed the connection)
2023-07-29 13:32:26 +0200yangby(~secret@183.128.108.131) (Quit: Go out for a walk and buy a drink.)
2023-07-29 13:33:09 +0200yangby(~secret@183.128.108.131)
2023-07-29 13:35:17 +0200razetime(~quassel@117.193.5.197)
2023-07-29 13:38:13 +0200mango(~finn@2001:861:5863:3d50:ec89:52d:e5c5:704d)
2023-07-29 13:38:16 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-29 13:42:09 +0200pandeyan(~pandeyan@135-180-53-157.fiber.dynamic.sonic.net) (Quit: ZNC 1.8.2 - https://znc.in)
2023-07-29 13:44:09 +0200anpad(~pandeyan@user/anpad)
2023-07-29 13:50:31 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 13:51:43 +0200 <ncf> int-e: lol so the issue was that i'm using GHC 9.2 which enables GHC2021 by default which implies GeneralizedNewtypeDeriving which raises a warning which turns into an error because of -Werror
2023-07-29 13:52:14 +0200 <int-e> nshepperd2:
2023-07-29 13:52:16 +0200 <ncf> which raises a warning [when used with Safe]
2023-07-29 13:52:24 +0200 <int-e> ncf: Ah the wonder of unintended side effects.
2023-07-29 13:52:52 +0200 <int-e> I can already see the ticket: "GHC2021 breaks SafeHaskell", highest priority, stop the presses.
2023-07-29 13:53:13 +0200 <ncf> :')
2023-07-29 13:53:26 +0200 <ncf> i'll open it anyway
2023-07-29 13:53:55 +0200 <ncf> ha https://gitlab.haskell.org/ghc/ghc/-/issues/19605
2023-07-29 13:54:07 +0200 <ncf> > I thought we decided in another ticket (I forget which) to allow this one to slip through, just to see if anyone notices.
2023-07-29 13:54:09 +0200 <lambdabot> <hint>:1:22: error: parse error on input ‘in’
2023-07-29 13:54:09 +0200 <ncf> rofl
2023-07-29 13:55:06 +0200 <int-e> Hecate: As the sole user of SafeHaskell, on behalf of the lambdabot community, I'd like to protest that deprecation. ("sole user" is probably inaccurate... but it's really hard to find convincing use cases for it. It's a cute idea, but it only ever covers a single notion of safety... which is way weaker than whatever people need in most contexts.)
2023-07-29 13:55:17 +0200 <int-e> Hecate: ;-)
2023-07-29 13:55:19 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 13:55:56 +0200 <boxscape_> How well does it fit what lambdabot needs?
2023-07-29 13:56:00 +0200 <int-e> (I've pondered generlizing SafeHaskell so that you could distinguish several notions of safety but that would only lead to fragmentation in the ecosystem.)
2023-07-29 13:57:28 +0200 <int-e> boxscape_: pretty well, it does deliver on the "well-typed programs don't go wrong" (where going wrong means dumping core because control flow went out of bounds) promise by locking out the nasty functions that break it (unsafeCoerce, unsafePerformIO).
2023-07-29 13:57:42 +0200 <boxscape_> I see
2023-07-29 13:57:55 +0200alpm(~alp@user/alp) (Ping timeout: 258 seconds)
2023-07-29 13:58:10 +0200 <int-e> And the "pure values don't perform arbitrary IO" promise.
2023-07-29 14:00:08 +0200 <int-e> There may be holes in this somewhere but I'm not currently aware of any, except that somebody might brute force an MD5 collision for Typeable. (Sounds scary, but the special collision attacks don't apply so for all I know it's the full 2^64 operations for a birthday attack... doable but actually a sizeable chunk of money.)
2023-07-29 14:03:26 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-07-29 14:04:36 +0200 <int-e> ncf: You can actually see (mostly) how I used to do this: https://github.com/lambdabot/lambdabot/issues/186 (The last time I did this was for GHC 8.10 but that was surprisingly painless.)
2023-07-29 14:05:26 +0200 <int-e> And 8.8 was probably the most painful of them all.
2023-07-29 14:08:21 +0200 <ncf> i didn't have to do anything else, actually
2023-07-29 14:08:41 +0200 <int-e> Nice.
2023-07-29 14:09:29 +0200 <ncf> well, aside from trustedPackages but i had that figured out last year
2023-07-29 14:11:48 +0200 <int-e> boxscape_: But people want more, of course... lock out internal APIs (possible, but this is the kind of thing that leads to fragmention over which functions should be safely importable and which not), lock out non-total functions (you can always write those), prevent unlawful class instances (GHC is not a theorem prover)...
2023-07-29 14:12:11 +0200 <boxscape_> yeah makes sense
2023-07-29 14:12:43 +0200 <int-e> So it never grew beyond this small sandboxing niche that is exemplified by lambdabot.
2023-07-29 14:13:08 +0200 <boxscape_> I guess Type : Type could also be a problem, although I haven't seen anyone actually demonstrate it being a problem *in haskell* yet
2023-07-29 14:13:09 +0200 <int-e> meh, spelling .examplified.
2023-07-29 14:13:47 +0200 <int-e> boxscape_: I /believe/ Haskell is barely safe because you get non-termination instead of contradictions. Not sure though.
2023-07-29 14:14:04 +0200 <boxscape_> hm okay
2023-07-29 14:14:10 +0200 <int-e> (Haskell's types aren't theorems.)
2023-07-29 14:14:24 +0200 <int-e> :t undefined
2023-07-29 14:14:25 +0200 <lambdabot> a
2023-07-29 14:14:51 +0200 <int-e> Or, at least, not very interesting theorems.
2023-07-29 14:15:29 +0200 <boxscape_> yeah you have to actually evaluate an expression (and wait for it to terminate) to prove the theorem its type represents, at which point you can't prove anything that's universally quantified
2023-07-29 14:15:37 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-07-29 14:15:38 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-07-29 14:15:51 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-07-29 14:16:02 +0200califax(~califax@user/califx)
2023-07-29 14:16:08 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-07-29 14:22:29 +0200mango(~finn@2001:861:5863:3d50:ec89:52d:e5c5:704d) (Ping timeout: 246 seconds)
2023-07-29 14:23:28 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 14:24:32 +0200mango(~finn@2001:861:5863:3d50:90c4:4ba:6297:e0c1)
2023-07-29 14:31:58 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-07-29 14:33:31 +0200fendor(~fendor@2a02:8388:1640:be00:1f28:32b1:54ac:a932) (Remote host closed the connection)
2023-07-29 14:37:54 +0200mango(~finn@2001:861:5863:3d50:90c4:4ba:6297:e0c1) (Ping timeout: 260 seconds)
2023-07-29 14:39:10 +0200 <Hecate> int-e: https://discourse.haskell.org/t/deprecating-safe-haskell-or-heavily-investing-in-it/5489
2023-07-29 14:42:18 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-07-29 14:44:00 +0200 <int-e> Hecate: I actually participated in the mailing list discussion in April 2022... I don't think that I have much to add to that.
2023-07-29 14:44:11 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-07-29 14:46:02 +0200 <int-e> But I don't have a better use case than lambdabot and the loss is basically losing work that has already been done in GHC and by annotating certain libraries (including lens) to work within the SafeHaskell setting... and of course sunsetting lambdabot's evaluation model.
2023-07-29 14:46:19 +0200 <int-e> I do not know how much maintenance burden this causes inside GHC.
2023-07-29 14:46:24 +0200int-eshrugs.
2023-07-29 14:46:52 +0200 <int-e> April 2021 actually.
2023-07-29 14:49:07 +0200 <Hecate> int-e: would something like bubblewrap & nsjail help for lambdabot?
2023-07-29 14:49:13 +0200 <Hecate> like it works for the haskell playground
2023-07-29 14:50:15 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-07-29 14:51:08 +0200gurkenglas(~gurkengla@dynamic-046-114-092-082.46.114.pool.telefonica.de) (Ping timeout: 244 seconds)
2023-07-29 14:53:09 +0200 <int-e> Hecate: are you prepared for the horror that is http://paste.debian.net/1287297/
2023-07-29 14:53:48 +0200 <int-e> But I really prefer this kind of thing to be the second line of defence rather than the first.
2023-07-29 14:54:28 +0200simulacrum(~sp0ok@2603-8000-d201-0802-ac46-3011-06e6-d2f2.res6.spectrum.com)
2023-07-29 14:59:41 +0200 <Hecate> int-e: frankly I'd rather we improve the status quo on these 52 lines of C
2023-07-29 14:59:56 +0200 <Hecate> LambdaBot certainly deserves better
2023-07-29 15:00:11 +0200 <Hecate> int-e: I'm not saying you're not doing anything, what I'm saying is that you deserve help and support
2023-07-29 15:00:43 +0200 <int-e> Mostly... the way I recall it, this idea of preventing the use of IO by only evaluating pure values and restricting imports is what sparked lambdabot's development. I don't want to lose it, it's nostalgic.
2023-07-29 15:02:02 +0200 <int-e> And losing SafeHaskell is a severe regression from that perspective. Back to manually vetting imports...
2023-07-29 15:02:35 +0200 <int-e> If you want plain sandboxing, there's yahb.
2023-07-29 15:03:41 +0200 <int-e> Note that I'm not saying that you shouldn't deprecate SafeHaskell; it's probably not worth the cost, overall.
2023-07-29 15:03:50 +0200 <int-e> But I *am* saddened by this.
2023-07-29 15:04:03 +0200 <Hecate> int-e: I understand
2023-07-29 15:18:17 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 15:23:10 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 244 seconds)
2023-07-29 15:27:56 +0200fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-29 15:28:04 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 15:31:38 +0200Guest6684(~finn@176-151-21-224.abo.bbox.fr)
2023-07-29 15:32:10 +0200res0nat0r0844909(~Fletch@fenrir.whatbox.ca) (Quit: Ping timeout (120 seconds))
2023-07-29 15:33:10 +0200simulacrum(~sp0ok@2603-8000-d201-0802-ac46-3011-06e6-d2f2.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2023-07-29 15:34:53 +0200 <EvanR> Inst__, all the funny remarks in that list I immediately learned over 10 years ago are wrong, like the monad endofunctor thing and the point free thing and the we don't need documentation or tests thing
2023-07-29 15:35:04 +0200res0nat0r0844909(~Fletch@fenrir.whatbox.ca)
2023-07-29 15:35:23 +0200 <EvanR> such insight should be in haskell 101 so this haskeller answers repo is valuable xD
2023-07-29 15:36:16 +0200 <EvanR> maybe most importantly, you need to know category theory before using haskell thing is wrong
2023-07-29 15:37:02 +0200res0nat0r0844909(~Fletch@fenrir.whatbox.ca) (Client Quit)
2023-07-29 15:37:46 +0200res0nat0r0844909(~Fletch@fenrir.whatbox.ca)
2023-07-29 15:39:39 +0200res0nat0r0844909(~Fletch@fenrir.whatbox.ca) (Client Quit)
2023-07-29 15:40:29 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 15:48:21 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 245 seconds)
2023-07-29 15:48:35 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 264 seconds)
2023-07-29 15:50:31 +0200seeg123456(~seeg12345@64.176.64.83)
2023-07-29 15:55:36 +0200seeg123456(~seeg12345@64.176.64.83) ()
2023-07-29 15:56:57 +0200gugu256(~gugu256@38.18.23.93.rev.sfr.net)
2023-07-29 15:57:41 +0200Guest89(~Guest89@ip4d1480a4.dynamic.kabel-deutschland.de)
2023-07-29 15:58:33 +0200seeg123456(~seeg12345@64.176.64.83)
2023-07-29 16:01:22 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-07-29 16:04:07 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2023-07-29 16:04:38 +0200Guest89(~Guest89@ip4d1480a4.dynamic.kabel-deutschland.de) (Quit: Client closed)
2023-07-29 16:05:40 +0200 <juri_> i still don't know category theory, but i have to admit, i accidentally learned to use monods sometime in the last decade.
2023-07-29 16:07:39 +0200seeg123456(~seeg12345@64.176.64.83) ()
2023-07-29 16:12:52 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 245 seconds)
2023-07-29 16:15:51 +0200gugu256(~gugu256@38.18.23.93.rev.sfr.net) (Ping timeout: 245 seconds)
2023-07-29 16:15:56 +0200tomboy64(~tomboy64@user/tomboy64)
2023-07-29 16:19:19 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-07-29 16:23:55 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a1c1:2fae:d038:32df)
2023-07-29 16:24:48 +0200 <probie> Now that we have linear types, we should ditch monadic IO, because monads are scary
2023-07-29 16:27:13 +0200 <probie> and just go with things like `putChar :: Char -> State# Realworld %1 -> State# Realworld` and `getChar :: State# Realworld %1 -> (State# Realworld, UR Char)`
2023-07-29 16:27:23 +0200 <probie> s/UR/Ur/
2023-07-29 16:27:49 +0200 <probie> since monads are what scare newcomers away
2023-07-29 16:28:08 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a1c1:2fae:d038:32df) (Ping timeout: 246 seconds)
2023-07-29 16:29:34 +0200 <boxscape_> we probably need linear constraints first
2023-07-29 16:29:48 +0200 <EvanR> linear IO
2023-07-29 16:30:17 +0200 <EvanR> ds9 sisko would object
2023-07-29 16:30:52 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
2023-07-29 16:35:07 +0200fweht(uid404746@id-404746.lymington.irccloud.com)
2023-07-29 16:44:23 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 264 seconds)
2023-07-29 16:53:00 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 16:53:21 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-07-29 16:54:57 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-07-29 16:57:57 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 17:01:38 +0200perrierjouet(~perrierjo@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.2)
2023-07-29 17:03:15 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 17:05:22 +0200gugu256(~gugu256@180.18.23.93.rev.sfr.net)
2023-07-29 17:07:04 +0200phma(phma@2001:5b0:211c:f748:3478:76f9:d3a9:cc0a) (Read error: Connection reset by peer)
2023-07-29 17:07:32 +0200phma(~phma@host-67-44-208-109.hnremote.net)
2023-07-29 17:13:58 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2023-07-29 17:20:18 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2023-07-29 17:20:45 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-07-29 17:24:40 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:c986:e1bf:9d12:c3e0)
2023-07-29 17:27:50 +0200ystael(~ystael@user/ystael) (Ping timeout: 246 seconds)
2023-07-29 17:28:36 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-07-29 17:29:14 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:c986:e1bf:9d12:c3e0) (Ping timeout: 246 seconds)
2023-07-29 17:29:27 +0200prateem(~user@2a02:c7c:a440:2900:9aa1:484a:8f82:e5f4)
2023-07-29 17:30:07 +0200perrierjouet(~perrierjo@modemcable048.127-56-74.mc.videotron.ca)
2023-07-29 17:33:04 +0200seeg123456(~seeg12345@64.176.64.83)
2023-07-29 17:34:07 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2023-07-29 17:37:29 +0200qqq(~qqq@92.43.167.61) (Quit: leaving)
2023-07-29 17:38:31 +0200hovsater(sid499516@id-499516.lymington.irccloud.com)
2023-07-29 17:39:16 +0200prateem(~user@2a02:c7c:a440:2900:9aa1:484a:8f82:e5f4) (ERC 5.4 (IRC client for GNU Emacs 28.2))
2023-07-29 17:39:51 +0200 <ncf> is there any work on Monad m => LensLike m s t a b ? what do we know about those?
2023-07-29 17:40:13 +0200 <ncf> (that is, Monad m => (a -> m b) -> s -> m t)
2023-07-29 17:40:59 +0200 <glguy> ncf: sounds like what was split out of lens called Action
2023-07-29 17:41:27 +0200 <ncf> hmmmmm
2023-07-29 17:41:41 +0200 <glguy> https://hackage.haskell.org/package/lens-action-0.2.6/docs/Control-Lens-Action.html
2023-07-29 17:41:53 +0200 <ncf> context: i'm trying to model some kind of traversal with possibly duplicate targets. supercontext: i'm trying to implement jq in haskell for fun
2023-07-29 17:42:07 +0200 <ncf> i'll look at that thx
2023-07-29 17:42:18 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-07-29 17:53:49 +0200 <ncf> glguy: ah, this is subtly different from what i'm looking for
2023-07-29 17:54:11 +0200 <ncf> this would be (a -> m r) -> s -> m t, not (a -> m b)
2023-07-29 17:54:51 +0200 <ncf> wait no
2023-07-29 17:55:07 +0200 <ncf> this would be (a -> m r) -> s -> f t, not (a -> f b) -> s -> f t
2023-07-29 17:56:04 +0200 <ncf> anyway the type of thing i'm trying to construct is fstTwice :: Thing (a, b) a; fstTwice k (a, b) = k a >>= \ a' -> k a' >>= \ a'' -> return (a'', b)
2023-07-29 17:56:33 +0200notzmv(~zmv@user/notzmv)
2023-07-29 17:56:57 +0200 <ncf> :t \ k (a, b) -> k a >>= \ a' -> k a' >>= \ a'' -> return (a'', b)
2023-07-29 17:56:58 +0200 <lambdabot> Monad m => (a -> m a) -> (a, b) -> m (a, b)
2023-07-29 17:58:31 +0200 <ncf> by instantiating that at Identity you get a Setter that modifies fst twice, and by instantiating it at Writer [whatever] you get something like a Fold that returns fst twice
2023-07-29 18:00:06 +0200 <ncf> but the goal is also to be able to merge two `Thing`s into one, like `adjoin` except safe. i don't know if this allows that
2023-07-29 18:00:11 +0200 <ncf> sorry, thinking out loud
2023-07-29 18:00:52 +0200 <EvanR> jq = jQuery? The famous monad? xD
2023-07-29 18:01:24 +0200 <ncf> jq is googleable by now
2023-07-29 18:01:47 +0200 <EvanR> ducked it
2023-07-29 18:09:38 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 18:14:36 +0200Sciencentistguy8(~sciencent@hacksoc/ordinary-member)
2023-07-29 18:17:14 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 260 seconds)
2023-07-29 18:17:14 +0200Sciencentistguy8Sciencentistguy
2023-07-29 18:25:00 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933)
2023-07-29 18:35:28 +0200 <ncf> oh, duh: adjoin :: Thing a b -> Thing a b -> Thing a b; adjoin p q f a = p f a >>= q f
2023-07-29 18:36:30 +0200 <ncf> Thing crucially has to be monomorphic, so no s t a b
2023-07-29 18:37:58 +0200 <ncf> edwardk: have you ever thought about Monad m => (a -> m a) -> s -> m s ?
2023-07-29 18:39:59 +0200ddellacosta(~ddellacos@146.70.168.156) (Ping timeout: 260 seconds)
2023-07-29 18:40:28 +0200ddellacosta(~ddellacos@146.70.168.156)
2023-07-29 18:40:42 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 18:54:14 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-07-29 18:54:35 +0200Guest6684(~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 264 seconds)
2023-07-29 18:54:41 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2023-07-29 18:55:37 +0200gurkenglas(~gurkengla@dynamic-046-114-092-082.46.114.pool.telefonica.de)
2023-07-29 18:57:30 +0200fbytez(~uid@user/fbytez) (Quit: byte byte)
2023-07-29 18:58:38 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-07-29 18:59:11 +0200fbytez(~uid@user/fbytez)
2023-07-29 19:03:08 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933) (Remote host closed the connection)
2023-07-29 19:04:21 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-07-29 19:05:52 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::c3b)
2023-07-29 19:06:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933)
2023-07-29 19:07:09 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-07-29 19:07:50 +0200seeg123456(~seeg12345@64.176.64.83) ()
2023-07-29 19:12:58 +0200chiselfuse(~chiselfus@user/chiselfuse) (Ping timeout: 240 seconds)
2023-07-29 19:13:33 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-07-29 19:19:58 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 19:20:52 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
2023-07-29 19:23:42 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-07-29 19:24:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933) (Remote host closed the connection)
2023-07-29 19:24:36 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds)
2023-07-29 19:25:20 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-07-29 19:26:29 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 246 seconds)
2023-07-29 19:28:02 +0200razetime(~quassel@117.193.5.197) (Remote host closed the connection)
2023-07-29 19:34:35 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-07-29 19:34:45 +0200simikando(~simikando@adsl-dyn-104.95-102-88.t-com.sk)
2023-07-29 19:34:55 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933)
2023-07-29 19:35:29 +0200razetime(~quassel@117.193.5.198)
2023-07-29 19:42:32 +0200razetime(~quassel@117.193.5.198) (Ping timeout: 244 seconds)
2023-07-29 19:43:21 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 245 seconds)
2023-07-29 19:45:35 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 264 seconds)
2023-07-29 19:52:02 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 245 seconds)
2023-07-29 19:53:35 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 246 seconds)
2023-07-29 19:58:00 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 20:02:32 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 20:13:00 +0200mc47(~mc47@xmonad/TheMC47)
2023-07-29 20:16:40 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933) (Remote host closed the connection)
2023-07-29 20:18:20 +0200APic(apic@apic.name) (Quit: Lost terminal)
2023-07-29 20:18:23 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933)
2023-07-29 20:18:58 +0200APic(apic@apic.name)
2023-07-29 20:19:12 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2023-07-29 20:25:18 +0200Sgeo(~Sgeo@user/sgeo)
2023-07-29 20:30:18 +0200Lycurgus(~juan@user/Lycurgus)
2023-07-29 20:30:49 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 20:31:57 +0200 <[exa]> STG question: where is the exact trick that allows looooooong foldl calls (without ') to _not_ run out of (argument) stack? And was it argument stack?
2023-07-29 20:32:39 +0200 <[exa]> (I'm trying to find the difference between the old STG paper and the new STG representation that doesn't have this issue and I can't find this written explicitly anywhere)
2023-07-29 20:33:16 +0200Lycurgus(~juan@user/Lycurgus) ()
2023-07-29 20:39:02 +0200 <dolio> I'm not sure what you're talking about.
2023-07-29 20:39:32 +0200 <dolio> Like, do you have a particular example?
2023-07-29 20:40:16 +0200 <monochrom> I don't think it exists.
2023-07-29 20:41:04 +0200 <geekosaur> I was surprised to hear this because of things like the recent change to `sum` to use `foldl'` which shouldn't have been necessary if such a trick existed?
2023-07-29 20:41:38 +0200 <geekosaur> otherwise all I can think of is update frames but I don't think this is their use case
2023-07-29 20:41:53 +0200 <geekosaur> (and squeezing update frames in particular)
2023-07-29 20:42:04 +0200 <monochrom> Stack overflow is much less frequent in non-old GHC because non-old GHC sets stack size to be proportional to memory size, not because STG changed this.
2023-07-29 20:42:21 +0200 <[exa]> ok maybe it was not foldl but scanl. I recall something caused older ghci to die with some stack overflow (but that's not the case for like 15 years now at least)
2023-07-29 20:42:31 +0200 <dolio> Squeezing update frames is in old papers, though.
2023-07-29 20:43:14 +0200gugu256(~gugu256@180.18.23.93.rev.sfr.net) (Read error: Connection reset by peer)
2023-07-29 20:43:45 +0200 <[exa]> hm update frames... will check, thanks for the pointer
2023-07-29 20:43:56 +0200lbseale(~quassel@user/ep1ctetus)
2023-07-29 20:44:26 +0200 <[exa]> anyway yeah the "exact trick" I meant is likely something that was implemented into haskells like 20 years ago :D
2023-07-29 20:45:25 +0200 <[exa]> the one which does not have the trick is the 1989 paper on STG from SPJ and Jon Salkild
2023-07-29 20:46:23 +0200 <[exa]> (all arguments are collected on a stack, so if you happen to jump to a sufficiently long application "spine", it should imo die.
2023-07-29 20:46:40 +0200 <monochrom> `recursive_split xs = let (y, z) = splitAt 5 xs in y : recursive_split z` would be one that held up linear heap space a long long time ago but since then GC smartened up and crunched it down back to constant space.
2023-07-29 20:46:49 +0200 <monochrom> But then that's heap not stack.
2023-07-29 20:46:57 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-07-29 20:47:19 +0200 <monochrom> And it was in the GCer not in STG.
2023-07-29 20:47:48 +0200 <[exa]> yeah
2023-07-29 20:48:10 +0200Guest6684(~finn@81-67-22-3.rev.numericable.fr)
2023-07-29 20:48:21 +0200 <monochrom> Automagically improving foldl would belong to strictness analysis and optimization, still not in STG.
2023-07-29 20:48:34 +0200 <monochrom> epic insane strictness analysis.
2023-07-29 20:49:39 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-07-29 20:50:06 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
2023-07-29 20:50:53 +0200lbseale(~quassel@user/ep1ctetus)
2023-07-29 20:51:44 +0200trev(~trev@user/trev) (Quit: trev)
2023-07-29 20:52:47 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com) ()
2023-07-29 20:53:06 +0200[exa]remembers there's stgi
2023-07-29 20:57:07 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
2023-07-29 20:57:30 +0200pavonia(~user@user/siracusa)
2023-07-29 20:58:01 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-07-29 20:59:34 +0200lbseale(~quassel@user/ep1ctetus)
2023-07-29 21:00:46 +0200 <[exa]> ok yeah the link all the way down at stgi page helped
2023-07-29 21:01:06 +0200 <dolio> The 89 paper you're talking about is apparently 'The Spineless G-Machine'. That predates Haskell, even.
2023-07-29 21:01:17 +0200 <[exa]> it's in "Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages"
2023-07-29 21:01:39 +0200 <[exa]> dolio: I meant this one, sorry for not posting the link, there's apparently more from 89 https://dl.acm.org/doi/pdf/10.1145/99370.99385
2023-07-29 21:01:48 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-07-29 21:02:45 +0200 <[exa]> aaaaanyway in the eval/apply they can relatively cheaply push the arguments directly to the closures, which eliminates the need for stack and falls back to allocating more closures in case there isn't enough space and stuff can't get evaluated more
2023-07-29 21:02:48 +0200lbseale(~quassel@user/ep1ctetus) (Client Quit)
2023-07-29 21:03:12 +0200 <[exa]> thanks for the pointers everyone
2023-07-29 21:03:30 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-29 21:04:14 +0200lbseale(~quassel@user/ep1ctetus)
2023-07-29 21:04:47 +0200 <dolio> Oh, did this have to do with compiling to C?
2023-07-29 21:05:01 +0200 <[exa]> no, more likely how stg stores the stuff in memory
2023-07-29 21:05:52 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-07-29 21:06:37 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds)
2023-07-29 21:08:42 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-07-29 21:09:41 +0200perrierjouet(~perrierjo@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.2)
2023-07-29 21:10:08 +0200perrierjouet(~perrierjo@modemcable048.127-56-74.mc.videotron.ca)
2023-07-29 21:12:51 +0200 <byorgey> hgolden: I do usually recommend VS Code to my students. I'm aware the .lhs support is not the best (for example, when VS Code tries to automatically add imports it often screws up the formatting), I don't know of anything better though.
2023-07-29 21:20:00 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-07-29 21:20:40 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-07-29 21:29:59 +0200simikando(~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Quit: Leaving)
2023-07-29 21:31:54 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 252 seconds)
2023-07-29 21:34:02 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 21:34:25 +0200vgtw(~vgtw@user/vgtw) (Ping timeout: 240 seconds)
2023-07-29 21:34:26 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2023-07-29 21:37:24 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 252 seconds)
2023-07-29 21:44:28 +0200Guest6684(~finn@81-67-22-3.rev.numericable.fr) (Ping timeout: 244 seconds)
2023-07-29 21:47:41 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 21:51:06 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-07-29 21:51:57 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 260 seconds)
2023-07-29 21:54:55 +0200ubert(~Thunderbi@178.115.51.82.wireless.dyn.drei.com)
2023-07-29 21:58:10 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-07-29 21:59:01 +0200phma_(phma@2001:5b0:211c:f748:3478:76f9:d3a9:cc0a)
2023-07-29 22:02:06 +0200phma(~phma@host-67-44-208-109.hnremote.net) (Ping timeout: 245 seconds)
2023-07-29 22:03:37 +0200 <hgolden> byorgey: ty!
2023-07-29 22:03:41 +0200wroathe(~wroathe@50.205.197.50)
2023-07-29 22:03:42 +0200wroathe(~wroathe@50.205.197.50) (Changing host)
2023-07-29 22:03:42 +0200wroathe(~wroathe@user/wroathe)
2023-07-29 22:09:20 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2023-07-29 22:10:26 +0200shapr(~user@2600:1700:c640:3100:3262:7ed5:7:9da3)
2023-07-29 22:10:42 +0200Guest5438(~finn@81-67-22-3.rev.numericable.fr)
2023-07-29 22:13:37 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 22:18:04 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2023-07-29 22:18:26 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-07-29 22:19:14 +0200Pickchea(~private@user/pickchea)
2023-07-29 22:19:52 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-07-29 22:20:49 +0200lbseale(~quassel@user/ep1ctetus)
2023-07-29 22:20:59 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 264 seconds)
2023-07-29 22:21:51 +0200notzmv(~zmv@user/notzmv)
2023-07-29 22:22:44 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2023-07-29 22:32:26 +0200gurkenglas(~gurkengla@dynamic-046-114-092-082.46.114.pool.telefonica.de) (Ping timeout: 250 seconds)
2023-07-29 22:35:02 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-07-29 22:36:14 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-07-29 22:42:24 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-07-29 22:43:10 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-07-29 22:43:11 +0200acidjnk(~acidjnk@p200300d6e7072f74a4887092d5a58bfa.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2023-07-29 22:43:27 +0200prateem(~user@2a02:c7c:a440:2900:9aa1:484a:8f82:e5f4)
2023-07-29 22:44:36 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933) (Remote host closed the connection)
2023-07-29 22:46:32 +0200ubert1(~Thunderbi@178.115.51.82.wireless.dyn.drei.com)
2023-07-29 22:51:26 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-07-29 23:02:33 +0200acidjnk(~acidjnk@p200300d6e7072f74dd20c62d1ea21df4.dip0.t-ipconnect.de)
2023-07-29 23:05:26 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2023-07-29 23:14:02 +0200wroathe(~wroathe@50.205.197.50)
2023-07-29 23:14:02 +0200wroathe(~wroathe@50.205.197.50) (Changing host)
2023-07-29 23:14:02 +0200wroathe(~wroathe@user/wroathe)
2023-07-29 23:15:19 +0200 <EvanR> i've updated my cargo cult understanding of ghc's update frames to cargo cult understanding of ghc's selector thunks, for explaining how scanl doesn't blow the stack/heap
2023-07-29 23:15:49 +0200 <EvanR> I guess 20 years ago there was another story
2023-07-29 23:16:23 +0200 <EvanR> 14 years ago I decidedly remember stack overflowing all the time
2023-07-29 23:17:38 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 246 seconds)
2023-07-29 23:17:40 +0200prateem(~user@2a02:c7c:a440:2900:9aa1:484a:8f82:e5f4) (Read error: Connection reset by peer)
2023-07-29 23:17:54 +0200prateem(~user@2a02:c7c:a440:2900:9aa1:484a:8f82:e5f4)
2023-07-29 23:19:38 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-07-29 23:20:25 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-07-29 23:20:58 +0200 <geekosaur> as monochrom mentioned, since then ghc has changed to assign stack based on available memory instead of a fixed 8k(iirc)
2023-07-29 23:21:12 +0200 <geekosaur> 8k is really easy to overflow
2023-07-29 23:21:29 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-07-29 23:22:48 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933)
2023-07-29 23:24:46 +0200 <dolio> Yeah. Nowadays you only stack overflow if your stack takes up like 80% of memory. And you probably have more memory than 14 years ago.
2023-07-29 23:26:10 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 250 seconds)
2023-07-29 23:27:14 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-07-29 23:31:12 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 23:35:19 +0200inedia(~irc@2600:3c00:e000:287::1) (Quit: WeeChat 3.7.1)
2023-07-29 23:35:33 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa) (Ping timeout: 244 seconds)
2023-07-29 23:36:23 +0200gurkenglas(~gurkengla@dynamic-046-114-092-082.46.114.pool.telefonica.de)
2023-07-29 23:39:07 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-07-29 23:39:40 +0200internatetional(~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f) (Quit: WeeChat 4.0.2)
2023-07-29 23:40:06 +0200internatetional(~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f)
2023-07-29 23:40:23 +0200dove(~irc@2600:3c00:e000:287::1)
2023-07-29 23:43:53 +0200Tlsx(~rscastilh@187.40.124.54)
2023-07-29 23:45:06 +0200tan00kee(~paul@pauloliver.dev)
2023-07-29 23:45:44 +0200tan00kee(~paul@pauloliver.dev) (Client Quit)
2023-07-29 23:47:05 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933) (Remote host closed the connection)
2023-07-29 23:47:22 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:18db:fb53:1602:b933)
2023-07-29 23:47:59 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-07-29 23:48:03 +0200ubert1(~Thunderbi@178.115.51.82.wireless.dyn.drei.com) (Quit: ubert1)
2023-07-29 23:48:49 +0200nick4(~nick@2600:8807:9084:7800:d53:c5f4:7789:80aa)
2023-07-29 23:48:50 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2023-07-29 23:49:18 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-07-29 23:49:22 +0200Tlsx(~rscastilh@187.40.124.54) ()
2023-07-29 23:49:41 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-07-29 23:51:12 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2023-07-29 23:53:24 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)