2023/10/11

2023-10-11 00:00:07 +0200 <geekosaur> I had to push them onto 9…
2023-10-11 00:00:37 +0200 <geekosaur> (when they added linear haskell. I think that was on ghc-devs)
2023-10-11 00:01:03 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri) (Quit: WeeChat 4.0.5)
2023-10-11 00:02:04 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-10-11 00:02:08 +0200 <mauke> ... yep, three decades is about right. on 2024-10-17, perl 5 will celebrate its 30th birthday
2023-10-11 00:02:09 +0200 <monochrom> Haha, in that case, how about a release with lots of great new features that nobody wants to use so people stay on the previous major version number for three decades >:D
2023-10-11 00:03:45 +0200 <Rembane> Dependent types in Perl 5 ftw!
2023-10-11 00:04:10 +0200 <monochrom> Ah, maybe I misread. You probably meant instead you talked the GHC devs out of calling linear haskell "8.12".
2023-10-11 00:04:14 +0200 <geekosaur> actually Krzysztof suggested it first, I just got behind and pushed when people wanted to save that for Dependent Haskell
2023-10-11 00:04:34 +0200 <geekosaur> ("that" = ghc 9.0)
2023-10-11 00:04:39 +0200 <tomsmeding> if people wait for DH that's actually going to be three decades
2023-10-11 00:05:34 +0200 <geekosaur> yeh, that was pretty much my point. https://mail.haskell.org/pipermail/ghc-devs/2020-July/019057.html
2023-10-11 00:07:02 +0200Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: leaving)
2023-10-11 00:09:29 +0200 <mauke> https://hackage.haskell.org/package/ghc-bignum-1.3/docs/GHC-Num-Integer.html#t:Integer why does the haddock render wrong?
2023-10-11 00:09:42 +0200 <mauke> it shows Integer where the source uses 'IP'
2023-10-11 00:11:25 +0200hiyori(~hiyori@user/hiyori)
2023-10-11 00:11:46 +0200privacy(~privacy@user/privacy) (Quit: Leaving)
2023-10-11 00:11:49 +0200 <Rembane> geekosaur: Is Dependent Haskell something that's on its way into the main language?
2023-10-11 00:12:08 +0200 <geekosaur> eventually
2023-10-11 00:12:30 +0200 <geekosaur> mauke, it does it twice, even. sounds like a Haddock bug
2023-10-11 00:14:26 +0200 <mauke> I wonder if one of the imports contains 'type IP = Integer' or similar, or if something is going wrong with CPP
2023-10-11 00:16:24 +0200 <geekosaur> it's not cpp or the constructor would have been renamed, which ":i Integer" in ghci says it hasn't
2023-10-11 00:16:43 +0200thegeekinside(~thegeekin@189.217.90.224)
2023-10-11 00:20:14 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri)
2023-10-11 00:29:58 +0200wroathe(~wroathe@user/wroathe)
2023-10-11 00:33:46 +0200falafel(~falafel@62.175.113.194.dyn.user.ono.com)
2023-10-11 00:53:26 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-11 00:55:22 +0200Sgeo(~Sgeo@user/sgeo)
2023-10-11 00:58:31 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2023-10-11 01:00:29 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2023-10-11 01:08:33 +0200pounce_(~pounce@user/cute/pounce)
2023-10-11 01:08:45 +0200falafel(~falafel@62.175.113.194.dyn.user.ono.com) (Remote host closed the connection)
2023-10-11 01:09:24 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-11 01:09:32 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
2023-10-11 01:10:12 +0200vglfr(~vglfr@88.155.165.25) (Ping timeout: 240 seconds)
2023-10-11 01:10:17 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-10-11 01:10:28 +0200Square2(~Square4@user/square)
2023-10-11 01:10:35 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-11 01:11:10 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2023-10-11 01:11:45 +0200pounce_pounce
2023-10-11 01:13:35 +0200Square(~Square@user/square) (Ping timeout: 258 seconds)
2023-10-11 01:20:31 +0200pounce(~pounce@user/cute/pounce) (Remote host closed the connection)
2023-10-11 01:20:49 +0200pounce(~pounce@user/cute/pounce)
2023-10-11 01:21:03 +0200ph88(~ph88@ip5b406c07.dynamic.kabel-deutschland.de)
2023-10-11 01:24:03 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Read error: Connection reset by peer)
2023-10-11 01:24:15 +0200yuuta(~YuutaW@mail.yuuta.moe)
2023-10-11 01:25:46 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-11 01:27:21 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri) (Quit: WeeChat 4.0.5)
2023-10-11 01:28:11 +0200harveypwca(~harveypwc@2601:246:c280:6a90:837d:db39:3eea:f7db) (Quit: Leaving)
2023-10-11 01:30:07 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri)
2023-10-11 01:31:10 +0200YuutaW(~YuutaW@mail.yuuta.moe)
2023-10-11 01:31:26 +0200yuuta(~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds)
2023-10-11 01:46:55 +0200notzmv(~zmv@user/notzmv)
2023-10-11 01:49:15 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
2023-10-11 01:57:23 +0200cheater_(~Username@user/cheater)
2023-10-11 01:58:30 +0200cheater_(~Username@user/cheater) (Read error: Connection reset by peer)
2023-10-11 01:58:31 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2023-10-11 01:59:15 +0200cheater_(~Username@user/cheater)
2023-10-11 01:59:15 +0200cheater_cheater
2023-10-11 02:01:43 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-10-11 02:20:26 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-10-11 02:31:48 +0200Sciencentistguy6(~sciencent@hacksoc/ordinary-member)
2023-10-11 02:33:35 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 240 seconds)
2023-10-11 02:33:35 +0200Sciencentistguy6Sciencentistguy
2023-10-11 02:39:08 +0200TonyStone(~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Remote host closed the connection)
2023-10-11 02:51:21 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-10-11 02:51:21 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-10-11 02:51:21 +0200wroathe(~wroathe@user/wroathe)
2023-10-11 02:51:35 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2023-10-11 02:52:39 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-10-11 02:55:27 +0200lg188(~lg188@82.18.98.230) (Ping timeout: 240 seconds)
2023-10-11 02:55:58 +0200lg188(~lg188@82.18.98.230)
2023-10-11 02:56:20 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 255 seconds)
2023-10-11 02:57:10 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-10-11 03:01:08 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Quit: oo_miguel)
2023-10-11 03:03:05 +0200Guest23(~Guest23@149.19.169.127)
2023-10-11 03:03:09 +0200 <Guest23> Garfield's Foursome with Nermal, Edna Skilton, and Jean Pierre Manikariza
2023-10-11 03:03:09 +0200 <Guest23> Garfield, Nermal, Edna Skilton, and Jean Pierre Manikariza have an orgy over lasagna!  https://justpaste.it/Garfield-Foursome-Nermal-Skilton
2023-10-11 03:03:46 +0200Guest23(~Guest23@149.19.169.127) (K-Lined)
2023-10-11 03:19:42 +0200grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2023-10-11 03:22:40 +0200otto_s(~user@p5b044f94.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-10-11 03:24:34 +0200otto_s(~user@p4ff272d5.dip0.t-ipconnect.de)
2023-10-11 03:27:25 +0200hiyori(~hiyori@user/hiyori) (Quit: Client closed)
2023-10-11 03:29:28 +0200hiyori(~hiyori@user/hiyori)
2023-10-11 03:29:56 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 246 seconds)
2023-10-11 03:30:05 +0200 <EvanR> I've heard that unsafeInterleaveIO is not actually unsafe. In what sense is it not unsafe. Should it say unhaskellyInterleaveIO instead because evaluating the results causes side effects
2023-10-11 03:30:21 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2023-10-11 03:31:39 +0200 <geekosaur> it's unsafe because I/O actions are triggered in apparently pure code. the Haskell report actually mitigates this to some extent by requiring silent failure in cases where this would be revealed (e.g. exceptions), but GHC's RTS throws them instead
2023-10-11 03:33:50 +0200j1grosuc(~j1grosuc@190.123.12.128)
2023-10-11 03:34:02 +0200 <EvanR> not throwing exceptions is safer??
2023-10-11 03:34:07 +0200sabino(~sabino@user/sabino) (Quit: Lambda _ -> x)
2023-10-11 03:34:21 +0200 <geekosaur> from a purity standpoint, yes
2023-10-11 03:34:26 +0200j1grosuc(~j1grosuc@190.123.12.128) (K-Lined)
2023-10-11 03:34:43 +0200 <geekosaur> no unexpected bottoms
2023-10-11 03:35:57 +0200 <geekosaur> you lose the ability to reason about code when an invisible I/O action can inject unexpected bottoms
2023-10-11 03:35:59 +0200 <EvanR> ok the "as long as the program doesn't crash" anti-erlang philosophy
2023-10-11 03:37:56 +0200 <EvanR> well yeah this whole narrative seems paint unsafeInterleaveIO as pretty bad either way
2023-10-11 03:38:30 +0200 <EvanR> but somehow I recall it being considered not as bad as unsafePerformIO
2023-10-11 03:39:24 +0200 <geekosaur> I've seen both takes
2023-10-11 03:40:39 +0200 <geekosaur> I think it's still out of sequence with other I/O actions, but at least hypothetically can't interfere with or be interfered with by them (in particular the RTS is supposed to "lock" any resources that are under control of unsafeInterleaveIO)
2023-10-11 03:41:49 +0200 <EvanR> how does that work. getContents does the half closing of the handle, but in general?
2023-10-11 03:42:02 +0200 <geekosaur> getContents is unsafeInterleaveIO
2023-10-11 03:42:07 +0200 <EvanR> yeah
2023-10-11 03:42:51 +0200 <geekosaur> and that's what does the half closing. my read of the Report is that it's supposed to be impossible to reopen a file for which a half-closed handle exists
2023-10-11 03:43:04 +0200 <geekosaur> not merely impossible to touch that handle
2023-10-11 03:43:13 +0200 <EvanR> in general how does it know what resources are involved in your mad science unsafeInterleaveIO
2023-10-11 03:43:19 +0200 <EvanR> GC reachable?
2023-10-11 03:45:13 +0200 <geekosaur> actually you're expected to tell it yourself, as with hGetContents (https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/src/GHC.IO.Handle.Text.h…)
2023-10-11 03:45:19 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-10-11 03:45:27 +0200 <geekosaur> it can't be automatic because, as you point out, how can it know?
2023-10-11 03:45:48 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-10-11 03:47:23 +0200 <geekosaur> so in the general case you must know how to tell the RTS that some resources can no longer be touched. this is a problem with unsafeInterleaveIO because there are no documented ways to do this in the Report and the only documentation for GHC is in GHC.IO.Handle iirc
2023-10-11 03:47:50 +0200 <EvanR> interesting
2023-10-11 03:47:58 +0200 <geekosaur> and that might not be enough to deal with, say, a database connection
2023-10-11 03:49:36 +0200hiyori(~hiyori@user/hiyori) (Quit: Client closed)
2023-10-11 03:52:24 +0200_xor8(~xor@ip-50-5-233-250.dynamic.fuse.net)
2023-10-11 03:54:19 +0200_xor(~xor@ip-50-5-233-250.dynamic.fuse.net) (Ping timeout: 255 seconds)
2023-10-11 03:54:19 +0200_xor8_xor
2023-10-11 04:08:26 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-10-11 04:13:07 +0200xff0x(~xff0x@2405:6580:b080:900:f7aa:8fa9:8388:1900) (Ping timeout: 260 seconds)
2023-10-11 04:13:56 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34) (Remote host closed the connection)
2023-10-11 04:14:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34)
2023-10-11 04:17:06 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-10-11 04:18:06 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-10-11 04:21:43 +0200thegeekinside(~thegeekin@189.217.90.224) (Remote host closed the connection)
2023-10-11 04:28:34 +0200thegeekinside(~thegeekin@189.217.90.224)
2023-10-11 04:37:00 +0200Sanguine(~Sanguine@bcdcac82.skybroadband.com) (Ping timeout: 248 seconds)
2023-10-11 04:39:31 +0200grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
2023-10-11 04:40:31 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
2023-10-11 04:42:45 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-10-11 04:42:45 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-10-11 04:42:45 +0200finn_elijaFinnElija
2023-10-11 04:49:06 +0200arahael(~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
2023-10-11 04:53:16 +0200td_(~td@i53870936.versanet.de) (Ping timeout: 260 seconds)
2023-10-11 04:54:57 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-11 04:59:33 +0200sm(~sm@plaintextaccounting/sm)
2023-10-11 04:59:41 +0200td_(~td@2001:9e8:19f7:c900:55c4:edef:d459:6ff7)
2023-10-11 04:59:52 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-10-11 05:03:51 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 240 seconds)
2023-10-11 05:04:08 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-10-11 05:07:49 +0200Sanguine(~Sanguine@176.254.244.83)
2023-10-11 05:11:31 +0200__monty__(~toonn@user/toonn)
2023-10-11 05:15:48 +0200__monty__(~toonn@user/toonn) (Ping timeout: 240 seconds)
2023-10-11 05:16:56 +0200aforemny_(~aforemny@i59f516dd.versanet.de)
2023-10-11 05:18:09 +0200aforemny(~aforemny@i59F516D8.versanet.de) (Ping timeout: 258 seconds)
2023-10-11 05:20:57 +0200sm(~sm@plaintextaccounting/sm)
2023-10-11 05:25:01 +0200ss4(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-10-11 05:27:02 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2023-10-11 05:38:35 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 240 seconds)
2023-10-11 05:40:05 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 240 seconds)
2023-10-11 05:40:07 +0200gehmehgeh(~user@user/gehmehgeh)
2023-10-11 05:41:29 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 252 seconds)
2023-10-11 05:41:50 +0200YuutaW(~YuutaW@mail.yuuta.moe)
2023-10-11 05:42:56 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-10-11 05:45:27 +0200thegeekinside(~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
2023-10-11 05:49:12 +0200shapr(~user@2600:1700:c640:3100:4d15:1e8d:2f46:bef9) (Remote host closed the connection)
2023-10-11 05:49:25 +0200shapr(~user@2600:1700:c640:3100:5112:c2fa:e8e6:5128)
2023-10-11 06:07:53 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 252 seconds)
2023-10-11 06:09:27 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-10-11 06:13:01 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 252 seconds)
2023-10-11 06:13:23 +0200califax(~califax@user/califx) (Ping timeout: 252 seconds)
2023-10-11 06:13:24 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-10-11 06:13:36 +0200califax_(~califax@user/califx)
2023-10-11 06:14:51 +0200califax_califax
2023-10-11 06:20:05 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-11 06:20:11 +0200tzh_(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2023-10-11 06:20:21 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 06:20:29 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2023-10-11 06:20:48 +0200vglfr(~vglfr@88.155.190.13) (Remote host closed the connection)
2023-10-11 06:22:27 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 06:22:40 +0200tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Ping timeout: 255 seconds)
2023-10-11 06:24:53 +0200vglfr(~vglfr@88.155.190.13) (Remote host closed the connection)
2023-10-11 06:25:37 +0200tzh_(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
2023-10-11 06:25:42 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 06:25:51 +0200vglfr(~vglfr@88.155.190.13) (Remote host closed the connection)
2023-10-11 06:28:19 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 06:30:04 +0200vglfr(~vglfr@88.155.190.13) (Read error: Connection reset by peer)
2023-10-11 06:30:24 +0200vglfr(~vglfr@149.102.244.115)
2023-10-11 06:33:14 +0200vglfr(~vglfr@149.102.244.115) (Remote host closed the connection)
2023-10-11 06:34:09 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 06:34:17 +0200vglfr(~vglfr@88.155.190.13) (Read error: Connection reset by peer)
2023-10-11 06:34:37 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr)
2023-10-11 06:44:18 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr) (Ping timeout: 272 seconds)
2023-10-11 06:44:58 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 06:45:33 +0200danza(~francesco@151.35.192.230)
2023-10-11 06:47:34 +0200Pixi`(~Pixi@user/pixi) (Read error: Connection reset by peer)
2023-10-11 06:52:05 +0200danza(~francesco@151.35.192.230) (Ping timeout: 240 seconds)
2023-10-11 06:54:10 +0200phma(~phma@host-67-44-208-50.hnremote.net) (Read error: Connection reset by peer)
2023-10-11 06:58:18 +0200phma(~phma@2001:5b0:211c:9d28:dc53:577d:4a04:1d14)
2023-10-11 06:58:22 +0200tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2023-10-11 06:58:35 +0200jinsun(~jinsun@user/jinsun)
2023-10-11 07:01:42 +0200__monty__(~toonn@user/toonn)
2023-10-11 07:05:33 +0200Pixi(~Pixi@user/pixi)
2023-10-11 07:11:58 +0200michalz(~michalz@185.246.207.200)
2023-10-11 07:14:41 +0200phma(~phma@2001:5b0:211c:9d28:dc53:577d:4a04:1d14) (Read error: Connection reset by peer)
2023-10-11 07:14:55 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-10-11 07:16:46 +0200phma(~phma@host-67-44-208-58.hnremote.net)
2023-10-11 07:34:06 +0200Square3(~Square4@user/square)
2023-10-11 07:34:46 +0200danse-nr3(~francesco@151.35.192.230)
2023-10-11 07:35:23 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-10-11 07:36:52 +0200Square2(~Square4@user/square) (Ping timeout: 272 seconds)
2023-10-11 07:44:56 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-10-11 07:47:29 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-10-11 07:49:31 +0200vglfr(~vglfr@88.155.190.13) (Ping timeout: 264 seconds)
2023-10-11 07:50:48 +0200 <danse-nr3> good morning #haskell
2023-10-11 07:58:20 +0200acidjnk(~acidjnk@p200300d6e7072f8019cae40178150491.dip0.t-ipconnect.de)
2023-10-11 07:59:06 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 08:00:12 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-10-11 08:07:21 +0200 <dminuoso> Good morning.
2023-10-11 08:08:06 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds)
2023-10-11 08:11:36 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-10-11 08:13:03 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2023-10-11 08:17:21 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2023-10-11 08:21:28 +0200bilegeek(~bilegeek@2600:1008:b004:d50e:d8be:4118:2b29:669c) (Quit: Leaving)
2023-10-11 08:22:53 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-11 08:29:16 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 255 seconds)
2023-10-11 08:32:40 +0200Jesin(~Jesin@pool-72-83-12-199.washdc.fios.verizon.net)
2023-10-11 08:38:57 +0200danse-nr3_(~francesco@151.35.192.230)
2023-10-11 08:41:27 +0200danse-nr3(~francesco@151.35.192.230) (Ping timeout: 260 seconds)
2023-10-11 08:42:11 +0200danse-nr3(~francesco@151.35.192.230)
2023-10-11 08:42:12 +0200CiaoSen(~Jura@2a05:5800:2c3:8c00:664b:f0ff:fe37:9ef)
2023-10-11 08:44:48 +0200Jesin(~Jesin@pool-72-83-12-199.washdc.fios.verizon.net) (Quit: Jesin)
2023-10-11 08:45:16 +0200danse-nr3_(~francesco@151.35.192.230) (Quit: Leaving)
2023-10-11 08:50:26 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:8b9c:51e3:d64a:72e4)
2023-10-11 08:56:28 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-11 09:01:03 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-10-11 09:04:21 +0200danse-nr3(~francesco@151.35.192.230) (Read error: Connection reset by peer)
2023-10-11 09:04:27 +0200danse-nr3_(~francesco@151.35.217.158)
2023-10-11 09:09:47 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2023-10-11 09:10:09 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-10-11 09:11:41 +0200cfricke(~cfricke@user/cfricke)
2023-10-11 09:14:55 +0200fendor(~fendor@2a02:8388:1640:be00:aab:1226:f274:5021)
2023-10-11 09:17:54 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-10-11 09:20:31 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2023-10-11 09:34:09 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
2023-10-11 09:36:18 +0200zer0bitz(~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
2023-10-11 09:36:20 +0200 <Hecate> morning morning
2023-10-11 09:37:21 +0200Pickchea(~private@user/pickchea)
2023-10-11 09:37:52 +0200 <tomsmeding> The haskell playground currently has so far carried compilers back to ghc 8.6.5. Just now I added 8.4.4 because I could. Should it go further back? Should we drop old compilers at some point? Or should the list ever keep getting longer?
2023-10-11 09:37:57 +0200 <tomsmeding> Opinion time! :D
2023-10-11 09:39:01 +0200 <Hecate> well, having these older versions are indeed nice because you get to compare the generated Core/STG/ASM outputs
2023-10-11 09:39:06 +0200 <Hecate> that is objectively useful
2023-10-11 09:39:41 +0200 <Hecate> now the "problem" (which is quite unavoidable) is that the packages that are exposed will certainly have opinions about which GHC versions they want to run on
2023-10-11 09:40:50 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-10-11 09:41:06 +0200 <tomsmeding> In what sense? They can just select their preferred GHC version, right?
2023-10-11 09:41:07 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2023-10-11 09:41:32 +0200 <tomsmeding> I have a wishlist of packages and provide, for each GHC version, all that will build
2023-10-11 09:41:35 +0200euleritian(~euleritia@dynamic-046-114-204-165.46.114.pool.telefonica.de)
2023-10-11 09:42:13 +0200 <tomsmeding> It's a bit imperfect because sometimes cabal's solver tends to select very old versions to make the plan work and I should probably avoid that with some well-chosen lower boubds
2023-10-11 09:42:42 +0200euleritian(~euleritia@dynamic-046-114-204-165.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-11 09:42:59 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 09:45:40 +0200aforemny_aforemny
2023-10-11 09:49:48 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 240 seconds)
2023-10-11 09:55:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-10-11 09:57:44 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2023-10-11 09:58:37 +0200euleritian(~euleritia@dynamic-046-114-204-165.46.114.pool.telefonica.de)
2023-10-11 10:03:48 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-10-11 10:10:07 +0200zer0bitz(~zer0bitz@user/zer0bitz)
2023-10-11 10:16:18 +0200 <[exa]> tomsmeding: opinion: I'm trying not to care about ghc version
2023-10-11 10:16:39 +0200 <[exa]> but still thanks for the great effort
2023-10-11 10:18:18 +0200euleritian(~euleritia@dynamic-046-114-204-165.46.114.pool.telefonica.de) (Ping timeout: 258 seconds)
2023-10-11 10:19:21 +0200dsrt^(~cd@76.145.193.217) (Remote host closed the connection)
2023-10-11 10:19:39 +0200dsrt^(~cd@76.145.193.217)
2023-10-11 10:20:05 +0200 <tomsmeding> <3
2023-10-11 10:22:07 +0200notzmv(~zmv@user/notzmv)
2023-10-11 10:23:24 +0200mc47(~mc47@xmonad/TheMC47)
2023-10-11 10:26:41 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34) (Remote host closed the connection)
2023-10-11 10:27:29 +0200tomih_(tomith@85-156-187-17.elisa-laajakaista.fi)
2023-10-11 10:28:12 +0200danse-nr3_(~francesco@151.35.217.158) (Ping timeout: 240 seconds)
2023-10-11 10:28:57 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2023-10-11 10:30:03 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 252 seconds)
2023-10-11 10:30:07 +0200tomith(tomith@user/tomith) (Read error: Connection reset by peer)
2023-10-11 10:30:10 +0200tomih_tomith
2023-10-11 10:33:26 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 10:35:03 +0200Jackneill(~Jackneill@20014C4E1E021C00E4226B7959631CE0.dsl.pool.telekom.hu)
2023-10-11 10:35:24 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-10-11 10:37:30 +0200chele(~chele@user/chele)
2023-10-11 10:38:42 +0200Square3(~Square4@user/square) (Ping timeout: 260 seconds)
2023-10-11 10:38:43 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-10-11 10:41:20 +0200 <cpressey> tomsmeding: I don't have enough context to give you an opinion, but as a data point, I regularly use a tool that only works with ghc 7.10. (I run it from a Docker container).
2023-10-11 10:43:47 +0200 <tomsmeding> heh
2023-10-11 10:44:19 +0200 <tomsmeding> cpressey: for my curiosity, in what way does it break if you run it with ghc 8.0?
2023-10-11 10:44:56 +0200 <tomsmeding> (ghc 7.10 doesn't install from ghcup -- something _segfaults_, of all things)
2023-10-11 10:45:20 +0200tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
2023-10-11 10:46:44 +0200 <cpressey> tomsmeding: It's https://github.com/valderman/haste-compiler .  As I understand it, it relies on ghc internals to do the compiling.  ghc internals change (obvs), it was a thesis project of the author's and they have insufficient interest in it to update it.
2023-10-11 10:47:26 +0200 <tomsmeding> fair, I wasn't wondering why it wasn't updated -- these things happen. I was just wondering if it relied on GHC internals, and if it had any right to do so :p
2023-10-11 10:47:30 +0200 <tomsmeding> but it seems this clearly does
2023-10-11 10:48:42 +0200 <tomsmeding> I mean, GHCJS exists
2023-10-11 10:48:51 +0200 <tomsmeding> but "if it works, don't touch it"
2023-10-11 10:48:52 +0200 <cpressey> I could try switching to a different Haskell-to-JS compiler but all the ones I've seen seem immensely complicated to set up compared to haste.
2023-10-11 10:51:39 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-11 10:57:35 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-10-11 10:58:17 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 255 seconds)
2023-10-11 10:58:55 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34)
2023-10-11 11:02:04 +0200danse-nr3_(~francesco@151.35.217.158)
2023-10-11 11:02:41 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-10-11 11:03:48 +0200 <sshine> have you considered ghc wasm backend?
2023-10-11 11:05:39 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-10-11 11:08:59 +0200simendsjo(~user@84.211.91.241)
2023-10-11 11:20:53 +0200 <cpressey> sshine: Not yet, and I wouldn't expect it to happen unless/until my perception of "messing with wasm" switches from it being a "dreadful thing" to it being a "fun thing".  I don't have an ETA on that at present.
2023-10-11 11:24:14 +0200 <ncf> there's a js backend now
2023-10-11 11:24:31 +0200vglfr(~vglfr@88.155.190.13) (Read error: Connection reset by peer)
2023-10-11 11:25:24 +0200 <arahael> That js backend terrifies me.
2023-10-11 11:25:48 +0200 <haskellbridge> <s​m> cpressey I like this metric, could apply to many things
2023-10-11 11:29:02 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-10-11 11:36:52 +0200 <sand-witch> tomsmeding: Vlad also wants to implement T2T for both patterns and expressions at 9.10, so you would able to write "id t x = x :: t" (where "id :: forall a -> a -> a") and apply it as "id Int 5", without any "type" keywords
2023-10-11 11:40:23 +0200shapr(~user@2600:1700:c640:3100:5112:c2fa:e8e6:5128) (Remote host closed the connection)
2023-10-11 11:40:36 +0200shapr(~user@2600:1700:c640:3100:fb57:2f19:4620:f3bb)
2023-10-11 11:42:15 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 258 seconds)
2023-10-11 11:42:55 +0200xigua(~xigua@user/xigua) (Remote host closed the connection)
2023-10-11 11:43:29 +0200xigua(~xigua@user/xigua)
2023-10-11 11:43:54 +0200 <albet70> what is functor compose?
2023-10-11 11:44:34 +0200 <albet70> foldr (:) [] (Compose [Nothing, Just 3])
2023-10-11 11:44:40 +0200 <ncf> like function composition, but for functors
2023-10-11 11:45:06 +0200 <ncf> :k Compose
2023-10-11 11:45:07 +0200 <lambdabot> error:
2023-10-11 11:45:07 +0200 <lambdabot> Not in scope: type constructor or class ‘Compose’
2023-10-11 11:45:10 +0200hiyori(~hiyori@user/hiyori)
2023-10-11 11:46:17 +0200 <albet70> foldr (:) [] on this functor compose, why [3] is left?
2023-10-11 11:47:08 +0200 <sshine> sand-witch, is that types as values?
2023-10-11 11:48:00 +0200 <ncf> albet70: this appears to be using the (Foldable f, Foldable g) => Foldable (Compose f g) instance
2023-10-11 11:48:10 +0200 <ncf> :t foldr (:) []
2023-10-11 11:48:11 +0200 <lambdabot> Foldable t => t a -> [a]
2023-10-11 11:49:00 +0200 <ncf> if you see [_, _] as a container with two holes, Nothing as a container with zero holes and Just _ as a container with one hole, then via the composite instance [Nothing, Just 3] contains just 3
2023-10-11 11:52:04 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-10-11 11:52:44 +0200 <tomsmeding> sand-witch: :D
2023-10-11 11:55:13 +0200 <sand-witch> sshine: nope, they would be erased on compile time
2023-10-11 11:57:24 +0200ft(~ft@p3e9bc680.dip0.t-ipconnect.de) (Quit: leaving)
2023-10-11 11:59:37 +0200 <dminuoso> In some sense `(Foldable f, Foldable g) => Foldable (Compose f g)` is just another way of expressing `Monad []`
2023-10-11 12:00:36 +0200 <albet70> this Compose reminds me 'maybe' somehow, and 'traverse'
2023-10-11 12:01:18 +0200 <albet70> maybe can turn Maybe monad to another monad
2023-10-11 12:01:24 +0200 <dminuoso> Or let me ponder about this.
2023-10-11 12:01:53 +0200 <dminuoso> Actually on second thought, those things are not equivalent.
2023-10-11 12:01:53 +0200 <albet70> but monad does not compose, this functor do compose
2023-10-11 12:02:01 +0200 <dminuoso> > join [[1,2], [3,4]]
2023-10-11 12:02:02 +0200 <ncf> (f a -> [a]) -> (g a -> [a]) -> (f (g a) -> [a]) does turn into join :: [[a]] -> [a] by yoneda, but you don't get return out of this
2023-10-11 12:02:02 +0200 <lambdabot> [1,2,3,4]
2023-10-11 12:02:08 +0200 <dminuoso> Or no, actually they are the same.
2023-10-11 12:02:14 +0200 <dminuoso> Nevermind, its a good statement.
2023-10-11 12:02:25 +0200 <dminuoso> albet70: Well monad is *about* composition.
2023-10-11 12:02:37 +0200 <ncf> so it's a way of expressing half of the [] monad :)
2023-10-11 12:02:45 +0200 <dminuoso> Its quite literally about being able to do `T :.: T ~> T` in a sensible way
2023-10-11 12:03:21 +0200 <dminuoso> Where :.: is just infix Compose
2023-10-11 12:05:44 +0200 <albet70> dminuoso , what's its name? natural transparent?
2023-10-11 12:05:58 +0200hiyori(~hiyori@user/hiyori) (Ping timeout: 245 seconds)
2023-10-11 12:06:59 +0200 <dminuoso> albet70: Its a natural transformation. But if we ignore this fancy sounding name `T :.: T ~> T` is just another way of expressing `T a :.: T a -> T a`
2023-10-11 12:07:40 +0200 <dminuoso> Which using Compose would just be written `(Compose T T) a -> T a`, which is isomorphic to just `T (T a) -> T a`
2023-10-11 12:07:43 +0200 <dminuoso> And indeed:
2023-10-11 12:07:46 +0200 <dminuoso> :t join
2023-10-11 12:07:47 +0200 <lambdabot> Monad m => m (m a) -> m a
2023-10-11 12:07:50 +0200 <dminuoso> :t join @[]
2023-10-11 12:07:51 +0200 <lambdabot> error:
2023-10-11 12:07:51 +0200 <lambdabot> Pattern syntax in expression context: join@[]
2023-10-11 12:07:51 +0200 <lambdabot> Did you mean to enable TypeApplications?
2023-10-11 12:08:01 +0200 <dminuoso> % set -XTypeApplications
2023-10-11 12:08:01 +0200 <yahb2> <interactive>:7:1: error: ; • Variable not in scope: set ; • Perhaps you meant ‘seq’ (imported from Prelude) ; ; <interactive>:7:6: error: ; Data constructor not in scope: XTypeApplica...
2023-10-11 12:08:06 +0200 <dminuoso> % :set -XTypeApplications
2023-10-11 12:08:06 +0200 <yahb2> <no output>
2023-10-11 12:08:14 +0200 <dminuoso> % :t join @[]
2023-10-11 12:08:14 +0200 <yahb2> <interactive>:1:1: error: Variable not in scope: join
2023-10-11 12:08:17 +0200 <dminuoso> Jeez.
2023-10-11 12:08:41 +0200 <dminuoso> % :t join @[]
2023-10-11 12:08:41 +0200 <yahb2> join @[] :: Monad [] => [[a]] -> [a]
2023-10-11 12:12:28 +0200__monty__(~toonn@user/toonn) (Ping timeout: 248 seconds)
2023-10-11 12:14:53 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
2023-10-11 12:20:56 +0200__monty__(~toonn@user/toonn)
2023-10-11 12:26:56 +0200__monty__(~toonn@user/toonn) (Ping timeout: 272 seconds)
2023-10-11 12:40:49 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 255 seconds)
2023-10-11 12:41:45 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-11 12:44:33 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-10-11 12:48:11 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
2023-10-11 12:48:14 +0200smalltalkman(uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-11 12:48:51 +0200hiyori(~hiyori@user/hiyori)
2023-10-11 12:48:51 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 12:54:30 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 12:55:32 +0200privacy(~privacy@user/privacy)
2023-10-11 12:57:59 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-11 13:03:16 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2023-10-11 13:04:18 +0200danse-nr3__(~francesco@151.37.199.183)
2023-10-11 13:04:29 +0200danse-nr3_(~francesco@151.35.217.158) (Read error: Connection reset by peer)
2023-10-11 13:04:52 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-10-11 13:06:19 +0200arahael(~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-10-11 13:06:44 +0200xff0x(~xff0x@ai101218.d.east.v6connect.net)
2023-10-11 13:08:04 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 13:09:41 +0200CiaoSen(~Jura@2a05:5800:2c3:8c00:664b:f0ff:fe37:9ef) (Ping timeout: 260 seconds)
2023-10-11 13:11:12 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 13:11:57 +0200danse-nr3__(~francesco@151.37.199.183) (Ping timeout: 258 seconds)
2023-10-11 13:14:15 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-10-11 13:14:47 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-10-11 13:15:47 +0200arahael(~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
2023-10-11 13:17:08 +0200Cajun(~Cajun@user/cajun)
2023-10-11 13:17:17 +0200smalltalkman(uid545680@id-545680.hampstead.irccloud.com)
2023-10-11 13:18:35 +0200__monty__(~toonn@user/toonn)
2023-10-11 13:20:23 +0200vglfr(~vglfr@88.155.190.13) (Ping timeout: 258 seconds)
2023-10-11 13:21:55 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-10-11 13:22:42 +0200gehmehgeh(~user@user/gehmehgeh)
2023-10-11 13:24:34 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 13:25:54 +0200Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat)
2023-10-11 13:27:48 +0200Luj(~Luj@2a01:e0a:5f9:9681:c367:ba44:42cf:91d7)
2023-10-11 13:29:33 +0200fendor(~fendor@2a02:8388:1640:be00:aab:1226:f274:5021) (Remote host closed the connection)
2023-10-11 13:30:09 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-11 13:32:41 +0200privacy(~privacy@user/privacy) (Quit: Leaving)
2023-10-11 13:40:42 +0200CiaoSen(~Jura@2a05:5800:2c3:8c00:664b:f0ff:fe37:9ef)
2023-10-11 13:47:56 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-10-11 13:52:11 +0200diamond(~user@89.223.35.3)
2023-10-11 14:05:14 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-10-11 14:07:04 +0200vglfr(~vglfr@88.155.190.13) (Ping timeout: 255 seconds)
2023-10-11 14:11:34 +0200Cajun(~Cajun@user/cajun) (Quit: Client closed)
2023-10-11 14:13:00 +0200cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 240 seconds)
2023-10-11 14:17:21 +0200vglfr(~vglfr@88.155.190.13)
2023-10-11 14:20:26 +0200cods(~fred@tuxee.net)
2023-10-11 14:34:27 +0200sm(~sm@plaintextaccounting/sm)
2023-10-11 14:36:26 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-10-11 14:44:11 +0200hugo-hug
2023-10-11 14:46:47 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-10-11 14:46:47 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-10-11 14:46:47 +0200wroathe(~wroathe@user/wroathe)
2023-10-11 14:57:48 +0200hug(znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
2023-10-11 14:58:15 +0200pounce(~pounce@user/cute/pounce) (Remote host closed the connection)
2023-10-11 14:58:33 +0200pounce(~pounce@user/cute/pounce)
2023-10-11 15:00:05 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:8b9c:51e3:d64a:72e4) (Quit: WeeChat 2.8)
2023-10-11 15:01:49 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-10-11 15:02:21 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 258 seconds)
2023-10-11 15:03:33 +0200YuutaW(~YuutaW@mail.yuuta.moe)
2023-10-11 15:03:35 +0200pounce(~pounce@user/cute/pounce) (Remote host closed the connection)
2023-10-11 15:03:52 +0200pounce(~pounce@user/cute/pounce)
2023-10-11 15:04:53 +0200billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
2023-10-11 15:05:57 +0200pounce(~pounce@user/cute/pounce) (Remote host closed the connection)
2023-10-11 15:12:15 +0200pounce(~pounce@user/cute/pounce)
2023-10-11 15:12:42 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-10-11 15:13:05 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2023-10-11 15:13:51 +0200euleritian(~euleritia@dynamic-046-114-206-159.46.114.pool.telefonica.de)
2023-10-11 15:17:51 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-10-11 15:19:11 +0200pounce(~pounce@user/cute/pounce) (Ping timeout: 260 seconds)
2023-10-11 15:20:11 +0200danse-nr3(~francesco@151.37.199.183)
2023-10-11 15:21:40 +0200hiyori(~hiyori@user/hiyori) (Quit: Client closed)
2023-10-11 15:22:22 +0200fweht(uid404746@id-404746.lymington.irccloud.com)
2023-10-11 15:23:17 +0200euleritian(~euleritia@dynamic-046-114-206-159.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-11 15:23:36 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 15:27:05 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-10-11 15:27:40 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2023-10-11 15:28:00 +0200euleritian(~euleritia@dynamic-046-114-206-159.46.114.pool.telefonica.de)
2023-10-11 15:29:48 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 240 seconds)
2023-10-11 15:31:27 +0200lena64t(~lena64t@gateway/tor-sasl/hck) (Ping timeout: 252 seconds)
2023-10-11 15:32:04 +0200shapr(~user@2600:1700:c640:3100:fb57:2f19:4620:f3bb) (Remote host closed the connection)
2023-10-11 15:32:18 +0200shapr(~user@2600:1700:c640:3100:e8fe:9f19:d6ff:62f3)
2023-10-11 15:32:51 +0200YuutaW(~YuutaW@mail.yuuta.moe)
2023-10-11 15:35:06 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-11 15:35:21 +0200pounce(~pounce@user/cute/pounce)
2023-10-11 15:35:38 +0200lena64t(~lena64t@gateway/tor-sasl/hck)
2023-10-11 15:36:05 +0200pounce(~pounce@user/cute/pounce) (Remote host closed the connection)
2023-10-11 15:36:23 +0200euleritian(~euleritia@dynamic-046-114-206-159.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-11 15:36:41 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 15:36:54 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 15:37:10 +0200pounce(~pounce@user/cute/pounce)
2023-10-11 15:37:51 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2023-10-11 15:46:57 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2023-10-11 15:48:28 +0200hiyori(~hiyori@user/hiyori)
2023-10-11 15:49:31 +0200arahael(~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2023-10-11 15:49:40 +0200__monty__(~toonn@user/toonn) (Ping timeout: 255 seconds)
2023-10-11 15:51:05 +0200__monty__(~toonn@user/toonn)
2023-10-11 15:51:30 +0200sm(~sm@plaintextaccounting/sm)
2023-10-11 15:51:37 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 252 seconds)
2023-10-11 15:53:30 +0200ec(~ec@gateway/tor-sasl/ec)
2023-10-11 15:54:06 +0200lg188(~lg188@82.18.98.230) (Quit: Ping timeout (120 seconds))
2023-10-11 15:54:59 +0200lg188(~lg188@82.18.98.230)
2023-10-11 15:55:28 +0200lg188(~lg188@82.18.98.230) (Remote host closed the connection)
2023-10-11 15:58:33 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-10-11 15:59:12 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 16:01:14 +0200lg188(~lg188@82.18.98.230)
2023-10-11 16:02:22 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-10-11 16:02:46 +0200ames(~amelia@offtopia/offtopian/amelia) (Quit: Ping timeout (120 seconds))
2023-10-11 16:03:19 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri) (Ping timeout: 255 seconds)
2023-10-11 16:03:50 +0200Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2023-10-11 16:04:04 +0200pierrot(~pi@user/pierrot) (Quit: ZNC 1.8.2 - http://znc.in)
2023-10-11 16:05:17 +0200grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2023-10-11 16:05:27 +0200sm(~sm@plaintextaccounting/sm)
2023-10-11 16:11:46 +0200simendsjo(~user@84.211.91.241) (Ping timeout: 272 seconds)
2023-10-11 16:12:21 +0200CiaoSen(~Jura@2a05:5800:2c3:8c00:664b:f0ff:fe37:9ef) (Ping timeout: 260 seconds)
2023-10-11 16:19:35 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk)
2023-10-11 16:26:26 +0200hiyori(~hiyori@user/hiyori) (Quit: Client closed)
2023-10-11 16:26:37 +0200hiyori(~hiyori@user/hiyori)
2023-10-11 16:27:06 +0200thegeekinside(~thegeekin@189.217.90.224)
2023-10-11 16:34:29 +0200xigua(~xigua@user/xigua) (Remote host closed the connection)
2023-10-11 16:35:02 +0200xigua(~xigua@user/xigua)
2023-10-11 16:38:56 +0200Pozyomka(~pyon@user/pyon) (Quit: Pozyomka, my beloved: https://i.imgur.com/BMmVfTq.png)
2023-10-11 16:39:23 +0200xigua(~xigua@user/xigua) (Remote host closed the connection)
2023-10-11 16:39:53 +0200YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 246 seconds)
2023-10-11 16:39:57 +0200xigua(~xigua@user/xigua)
2023-10-11 16:40:23 +0200YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7)
2023-10-11 16:41:02 +0200jrm(~jrm@user/jrm) (Quit: ciao)
2023-10-11 16:42:36 +0200jrm(~jrm@user/jrm)
2023-10-11 16:45:24 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk) (Ping timeout: 240 seconds)
2023-10-11 16:50:41 +0200jrm(~jrm@user/jrm) (Quit: ciao)
2023-10-11 16:52:04 +0200jrm(~jrm@user/jrm)
2023-10-11 16:53:49 +0200ames(~amelia@offtopia/offtopian/amelia)
2023-10-11 16:55:14 +0200Franciman(~Franciman@mx1.fracta.dev)
2023-10-11 16:56:37 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri)
2023-10-11 16:58:20 +0200 <kuribas> It looks like when throwing an error, the application is not return an proper error code (1)?
2023-10-11 16:58:54 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 16:59:10 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk)
2023-10-11 16:59:12 +0200pierrot(~pi@user/pierrot)
2023-10-11 16:59:16 +0200 <geekosaur> ?
2023-10-11 16:59:29 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-11 17:01:10 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2023-10-11 17:03:19 +0200tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2023-10-11 17:03:47 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk) (Ping timeout: 255 seconds)
2023-10-11 17:04:00 +0200danse-nr3(~francesco@151.37.199.183) (Read error: Connection reset by peer)
2023-10-11 17:04:15 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-10-11 17:04:20 +0200 <geekosaur> https://paste.tomsmeding.com/RWqFNwGR `error` seems to produce a nonzero error code from the program. if it's not, I'd check for `catch`es that don't re-throw properly
2023-10-11 17:04:37 +0200danse-nr3(~francesco@151.37.182.55)
2023-10-11 17:04:49 +0200 <haskellbridge> <I​nst> Here's something I don't get. How does `join` even work?
2023-10-11 17:05:02 +0200 <haskellbridge> <I​nst> (>>= id)
2023-10-11 17:05:07 +0200 <haskellbridge> <I​nst> id doesn't have the right type signature, no?
2023-10-11 17:05:20 +0200 <kuribas> geekosaur: hmm right, I suppose something else is going on in my code then...
2023-10-11 17:05:25 +0200 <c_wraith> Inst: sure it does. But expand it.
2023-10-11 17:05:43 +0200 <geekosaur> `a` unifies with anything, as long as it's the same thing on both sides of the arrow
2023-10-11 17:05:52 +0200 <kuribas> geekosaur: indeed, I am catching and collecting the errors elsewhere.
2023-10-11 17:05:55 +0200 <haskellbridge> <I​nst> (>>=) :: m a -> (a -> m b) -> m b
2023-10-11 17:06:05 +0200 <haskellbridge> <I​nst> id :: a -> a
2023-10-11 17:06:28 +0200 <c_wraith> Inst: join x = x >>= id --- join x = x >>= \y -> y ---- join x = do {y <- x ; y}
2023-10-11 17:06:36 +0200 <haskellbridge> <I​nst> erm, id :: a2 -> a2
2023-10-11 17:06:46 +0200shapr(~user@2600:1700:c640:3100:e8fe:9f19:d6ff:62f3) (Remote host closed the connection)
2023-10-11 17:06:59 +0200shapr(~user@2600:1700:c640:3100:ae91:4ce3:990:5e2b)
2023-10-11 17:07:20 +0200euleritian(~euleritia@46.114.206.159)
2023-10-11 17:07:51 +0200 <haskellbridge> <I​nst> it's still freaky
2023-10-11 17:07:59 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk)
2023-10-11 17:08:06 +0200 <geekosaur> that's Hindley-Milner for you
2023-10-11 17:08:24 +0200 <EvanR> Inst, pretend >>= is an operation on IO actions and followup callbacks that use the result
2023-10-11 17:08:30 +0200 <c_wraith> Inst: now work on fix :: (IO a -> IO a) -> IO a
2023-10-11 17:08:50 +0200 <EvanR> then join does the obvious
2023-10-11 17:10:25 +0200 <EvanR> in the context of IO (IO a)
2023-10-11 17:11:15 +0200 <c_wraith> Inst: in any case, going back purely to types. given what you wrote, you immediately derive a2 ~ a, a2 ~ m b. From those, you derived a ~ m b. Then the type of (>>=) is restricted to m (m b) -> (m b -> m b) -> m b
2023-10-11 17:11:24 +0200 <haskellbridge> <I​nst> I don't have the intellectual background / understanding of HM to understand how this is supposed to work, I just know it works, and is convenient in a few rare usecases
2023-10-11 17:11:40 +0200 <geekosaur> see what c_wraith just wrote
2023-10-11 17:11:53 +0200 <haskellbridge> <I​nst> yeah, just saw it
2023-10-11 17:12:44 +0200 <[exa]> Inst: a very little bit of prolog practice usually solves all problem with unification-heavy algorithms like HM
2023-10-11 17:13:29 +0200 <EvanR> the identity function works for all types, that part shouldn't be confusing right
2023-10-11 17:13:43 +0200 <EvanR> if it couldn't specialize to the appropriate type, how would it ever work
2023-10-11 17:13:51 +0200 <kuribas> :t (>>=) id
2023-10-11 17:13:52 +0200 <lambdabot> (a -> a -> b) -> a -> b
2023-10-11 17:14:06 +0200 <geekosaur> but for most people prolog makes haskell look "normal" 😛
2023-10-11 17:14:26 +0200 <kuribas> :t (>>= id)
2023-10-11 17:14:27 +0200 <lambdabot> Monad m => m (m b) -> m b
2023-10-11 17:14:41 +0200 <[exa]> geekosaur: true point
2023-10-11 17:14:45 +0200 <EvanR> id 7 = 7, but Inst you should be surprised because id doesn't have the right ype?
2023-10-11 17:15:00 +0200 <haskellbridge> <I​nst> yeah, i know, the :t on (>>= id) makes sense and is understandable, but it's hard for me to grok the loopholes that somehow make (>>= id) work
2023-10-11 17:15:09 +0200 <kuribas> id here is (m b -> m b)
2023-10-11 17:15:10 +0200 <dolio> You don't need to understand Hindley-Milner. But you need to understand how to unify two types.
2023-10-11 17:15:35 +0200YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7) (Ping timeout: 246 seconds)
2023-10-11 17:15:56 +0200 <haskellbridge> <I​nst> yeah, tbh, implicitly this is a big problem, when i was very early on my Haskell journey, it was the type system that weirded me out
2023-10-11 17:15:59 +0200 <c_wraith> yeah, I actually don't understand H-M. but I can do unification!
2023-10-11 17:16:28 +0200 <kuribas> I don't even think you need to understand unification. Type variables are just variables, but at type level.
2023-10-11 17:16:38 +0200 <kuribas> unification is only used to infer them automatically.
2023-10-11 17:17:08 +0200 <haskellbridge> <I​nst> m1 (m2 b) -> (m2 b -> m1 b) -> m1 b ?
2023-10-11 17:17:12 +0200 <EvanR> id is the identity function, and it works at all argument/result types
2023-10-11 17:17:27 +0200 <haskellbridge> <I​nst> actually, i'm checking whether id is kind polymorphic in its type variables
2023-10-11 17:17:43 +0200 <haskellbridge> <I​nst> :t won't give me whether or not it's forall (a::k). a -> a
2023-10-11 17:17:53 +0200YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7)
2023-10-11 17:18:16 +0200 <dolio> Well, you could say, "you need to figure out how to instantiate variables to make the types match." That is just a description of what it means to unify two types.
2023-10-11 17:18:29 +0200 <haskellbridge> <I​nst> @c_wraith is this correct?
2023-10-11 17:18:30 +0200 <haskellbridge> <I​nst> m1 (m2 b) -> (m2 b -> m1 b) -> m1 b ?
2023-10-11 17:18:37 +0200 <[exa]> hm guys what's the easiest way now to run Haskell as javascript in a web app? say `interact :: Textarea -> Textarea` or so :D
2023-10-11 17:18:48 +0200 <kuribas> haskellbridge: no, id takes a value, which always must have kind Type (aka *)
2023-10-11 17:18:49 +0200 <[exa]> no need to manipulate DOM, just string to string
2023-10-11 17:18:53 +0200 <c_wraith> Inst: where did two different m types come from?
2023-10-11 17:19:31 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk) (Ping timeout: 264 seconds)
2023-10-11 17:19:52 +0200 <haskellbridge> <I​nst> "Then the type of (>>=) is restricted to m (m b) -> (m b -> m b) -> m b"
2023-10-11 17:19:59 +0200 <haskellbridge> <I​nst> so distinguishing them as m1 and m2
2023-10-11 17:20:20 +0200 <c_wraith> Inst: but they're required to be the same. distinguishing them doesn't work
2023-10-11 17:20:24 +0200fendor(~fendor@2a02:8388:1640:be00:aab:1226:f274:5021)
2023-10-11 17:20:57 +0200 <EvanR> code with one >>= introduces only one monad
2023-10-11 17:21:10 +0200 <c_wraith> Inst: the only uses of m came from the type of (>>=), and all three uses of m are the same in it
2023-10-11 17:21:40 +0200 <haskellbridge> <I​nst> no, i mean, the inner m is treated as a separate m, for purposes of matching the m a -> (a -> m b) -> m b type signature
2023-10-11 17:21:59 +0200 <haskellbridge> <I​nst> i guess it's just that i don't understand unification
2023-10-11 17:22:10 +0200 <EvanR> in HM everything can start out as different type variables but they will later get unified
2023-10-11 17:22:16 +0200 <haskellbridge> <I​nst> also, implicitly, you could also have implicit join via an (m a -> m b) function, no?
2023-10-11 17:22:25 +0200 <EvanR> like solving a system of equations
2023-10-11 17:22:30 +0200 <EvanR> and m1 = m2 comes out
2023-10-11 17:22:48 +0200 <kuribas> haskellbridge: (>>=) :: forall a b. m a -> (a -> m b) -> m b You can assign anything to `a`, for example `m b`, which gives forall b. m (m b) -> (m b -> m b) -> m b
2023-10-11 17:22:52 +0200 <haskellbridge> <I​nst> Thanks EvanR for the response :)
2023-10-11 17:23:24 +0200 <ncf> what's an implicit join?
2023-10-11 17:23:48 +0200 <haskellbridge> <I​nst> foo :: (Monad m) => m a -> m b
2023-10-11 17:24:12 +0200 <EvanR> Inst that is where explicit foralls come in handy, so you don't get confused by quantified variables and singular unknowns
2023-10-11 17:24:26 +0200 <EvanR> so that you don't confuse the two
2023-10-11 17:24:34 +0200 <c_wraith> that's... not a join. the idea of join is to collapse nested type constructors into a single application
2023-10-11 17:24:37 +0200 <haskellbridge> <I​nst> then ((u :: m (m a)) >>= foo) :: m b
2023-10-11 17:24:53 +0200 <haskellbridge> <I​nst> i mean that's implicit, if foo is m a -> m b
2023-10-11 17:24:55 +0200 <haskellbridge> <I​nst> then you bind into it
2023-10-11 17:25:24 +0200 <haskellbridge> <I​nst> not sure if Haskell's type system would respect this
2023-10-11 17:25:32 +0200 <EvanR> if >>= is defined in terms of join may that's implicit join
2023-10-11 17:25:40 +0200 <EvanR> (but it's not)
2023-10-11 17:26:25 +0200 <haskellbridge> <I​nst> i guess i'll play around with some Maybe a -> Maybe b functions to see what happens
2023-10-11 17:26:30 +0200 <c_wraith> ah, I think I see what you're going for. my starting analysis there wasn't a universal observation. it was for specifically the case of (>>= id)
2023-10-11 17:26:50 +0200 <c_wraith> when you unify the types of id and the second argument of (>>=)
2023-10-11 17:27:42 +0200lena64t(~lena64t@gateway/tor-sasl/hck) (Quit: WeeChat 4.0.0-dev)
2023-10-11 17:27:50 +0200 <haskellbridge> <I​nst> http://localhost:20662/_matrix/media/v1/download/matrix.org/GPPAVIEZjhBCAGewKMAzqono
2023-10-11 17:28:00 +0200 <EvanR> (forall a b .) Maybe a -> Maybe b functions won't get very far. They have to return Nothing
2023-10-11 17:28:15 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.0.4)
2023-10-11 17:29:15 +0200 <c_wraith> um. wow, that link is useless. geekosaur, did the bridge convert it to localhost, or was that on Inst's matrix client?
2023-10-11 17:29:21 +0200 <ncf> someone forgot to configure their matrix instance's base url
2023-10-11 17:29:51 +0200 <geekosaur> the bridge isn';t accessible from outside so I can't expose the links created for images/media/etc. properly
2023-10-11 17:30:02 +0200 <geekosaur> so it just uses localhost
2023-10-11 17:30:37 +0200 <geekosaur> and Inst uses images instead of pastebins etc. so there's little to be done
2023-10-11 17:30:47 +0200diamond(~user@89.223.35.3) (Ping timeout: 255 seconds)
2023-10-11 17:31:03 +0200 <EvanR> Inst, maybe post your content to twitter first and link that
2023-10-11 17:31:19 +0200 <haskellbridge> <I​nst> https://media.discordapp.net/attachments/968989726633779215/1161687327819710514/53db238e-f34c-49ec…
2023-10-11 17:31:52 +0200 <haskellbridge> <I​nst> I've boycotted twitter for a long time, would like to be able to boycott Discord eventually, but you have to be hooked into mainstream social media somehow
2023-10-11 17:32:04 +0200 <geekosaur> (I can't make a tunnel through the building's firewall)
2023-10-11 17:32:32 +0200 <haskellbridge> <I​nst> Thanks for the answers, though. :)
2023-10-11 17:32:36 +0200 <EvanR> Maybe a -> Maybe a has a few more options than Maybe a -> Maybe b
2023-10-11 17:33:14 +0200 <c_wraith> it has one more option, if you're restricting yourself to total functions
2023-10-11 17:33:50 +0200 <c_wraith> well. one more denotation. I suppose you could insert CPU-wasting code that wouldn't change the return value.
2023-10-11 17:34:49 +0200 <EvanR> I'm embarrassed you even suggested such a thing. Extensional equality of course
2023-10-11 17:35:27 +0200remexre(~remexre@user/remexre) (Ping timeout: 240 seconds)
2023-10-11 17:35:53 +0200 <dolio> Not into game semantics?
2023-10-11 17:43:35 +0200 <EvanR> *reads wikipedia real fast* interesting
2023-10-11 17:44:08 +0200 <dolio> Games are a relatively easy to understand intensional model of type theory.
2023-10-11 17:44:38 +0200 <c_wraith> Conway's games?
2023-10-11 17:45:07 +0200 <dolio> There's a difference between the `Maybe a -> Maybe b` game that just yields Nothing and the one that first challenges the opponent to provide their Maybe before yielding Nothing.
2023-10-11 17:45:28 +0200 <c_wraith> nope. Conway's games are entirely different! glad to have that cleared up!
2023-10-11 17:45:41 +0200 <haskellbridge> <I​nst> Ah, since this isn't guaranteed to be a specialized id. It can just turn everything into Nothing.
2023-10-11 17:46:26 +0200 <danse-nr3> [exa], wasm backend, javascript backend, purescript? There are other more exotic options
2023-10-11 17:46:59 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-10-11 17:47:21 +0200 <geekosaur> I think ghcjs is still the preferred ghc-based way, ghcjs is still a tech preview
2023-10-11 17:47:33 +0200 <geekosaur> er. js backend is still a tech preview
2023-10-11 17:47:47 +0200 <geekosaur> they're working on it but it'll take time
2023-10-11 17:47:56 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34) (Remote host closed the connection)
2023-10-11 17:48:11 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34)
2023-10-11 17:48:18 +0200 <[exa]> danse-nr3: is there some kind of howto? "I have this interact-only `main`, what to do now :D"
2023-10-11 17:48:49 +0200 <danse-nr3> there is a wiki page about the "javascript problem" ... not sure how up to date
2023-10-11 17:49:40 +0200 <danse-nr3> anyways it sounds like you want to write something relatively self-contained to be called from the javascript side. I think purescript was designed with this usecase in mind
2023-10-11 17:50:13 +0200 <[exa]> hm does purescript have parsec
2023-10-11 17:50:39 +0200 <danse-nr3> nope, it has a different ecosystem
2023-10-11 17:50:46 +0200 <EvanR> the javascript problem. Specifically, it exists and there's nothing anyone can do about that
2023-10-11 17:50:53 +0200 <[exa]> ah good it looks like there are parsecs for purescript
2023-10-11 17:51:00 +0200 <[exa]> well I'll try purescript and see, thanks!
2023-10-11 17:51:28 +0200 <danse-nr3> https://wiki.haskell.org/The_JavaScript_Problem
2023-10-11 17:51:46 +0200notzmv(~zmv@user/notzmv)
2023-10-11 17:51:56 +0200 <danse-nr3> yeah i think purescript is one of the most practical approaches
2023-10-11 17:53:11 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-10-11 17:56:21 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-10-11 17:57:06 +0200 <EvanR> quoting that page, we might not have time to teach people a new language, but people seem to have no problem inventing new languages at a rate that is borderline outlandish
2023-10-11 17:57:30 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-10-11 17:57:47 +0200 <[exa]> but wait purescript is eager??
2023-10-11 17:58:15 +0200 <yushyin> yup
2023-10-11 18:00:03 +0200 <EvanR> https://blog.drewolson.org/laziness-in-purescript
2023-10-11 18:01:27 +0200 <haskellbridge> <I​nst> wondering if it's possible to algorithmically generate all possible programming languages
2023-10-11 18:01:45 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds)
2023-10-11 18:02:02 +0200 <EvanR> is that like generating a list of all real numbers
2023-10-11 18:02:09 +0200sabino(~sabino@user/sabino)
2023-10-11 18:02:10 +0200 <haskellbridge> <I​nst> feels like it
2023-10-11 18:02:13 +0200 <EvanR> then no
2023-10-11 18:02:29 +0200 <haskellbridge> <I​nst> keywords are finite and countable
2023-10-11 18:02:36 +0200 <EvanR> then yes
2023-10-11 18:02:37 +0200 <haskellbridge> <I​nst> number of keywords are also finite and countable
2023-10-11 18:03:19 +0200 <haskellbridge> <I​nst> number of possible design concepts probably aren't, though :(
2023-10-11 18:03:46 +0200 <EvanR> [exa], on try.purescript.org I placed a division by zero in a tuple, then extracted the other component for one of the HTML elements output, and it didn't crash...
2023-10-11 18:04:00 +0200shryke(~shryke@2a00:4b00:13c:cc:b27b:25ff:fe18:efd) (Quit: WeeChat 4.0.5)
2023-10-11 18:04:14 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) (Remote host closed the connection)
2023-10-11 18:04:33 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216)
2023-10-11 18:04:34 +0200 <EvanR> maybe division by zero just isn't an error
2023-10-11 18:04:58 +0200 <[exa]> division by zero in js is afaik Infinity
2023-10-11 18:05:18 +0200 <EvanR> it's zero in purescript xD
2023-10-11 18:05:28 +0200 <EvanR> so I learned nothing about the laziness
2023-10-11 18:05:29 +0200 <danse-nr3> purescript is definitely strict
2023-10-11 18:05:41 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34) (Remote host closed the connection)
2023-10-11 18:06:10 +0200 <haskellbridge> <I​nst> Elm, giggle
2023-10-11 18:06:33 +0200 <haskellbridge> <I​nst> _ / 0 = 0 in Elm
2023-10-11 18:06:54 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2023-10-11 18:06:56 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk)
2023-10-11 18:07:27 +0200 <EvanR> it's not an unreasonable definition if you want your page to load when the author is bad at math
2023-10-11 18:08:04 +0200exarkun(~exarkun@user/exarkun) (Excess Flood)
2023-10-11 18:08:36 +0200 <EvanR> so to observe strictness we need an infinite loop probably...
2023-10-11 18:08:58 +0200exarkun(~exarkun@user/exarkun)
2023-10-11 18:09:30 +0200 <haskellbridge> <I​nst> Not sure if they copied that from Elm, Elm had a no exceptions promise, and they had to define _ / 0 as 0 to avoid exceptions
2023-10-11 18:09:32 +0200 <haskellbridge> <I​nst> it's an interesting problem
2023-10-11 18:09:59 +0200 <EvanR> sure, did they also stop infinite loops
2023-10-11 18:11:43 +0200danse-nr3(~francesco@151.37.182.55) (Ping timeout: 264 seconds)
2023-10-11 18:11:59 +0200fweht(uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-11 18:12:00 +0200 <haskellbridge> <I​nst> i mean, that, if you _ / 0, you can easily do Knight Capital Mark 2: https://www.henricodolfing.com/2019/06/project-failure-case-study-knight-capital.html
2023-10-11 18:12:01 +0200 <geekosaur> those don't throw exceptions
2023-10-11 18:13:03 +0200 <haskellbridge> <I​nst> i mean, that, if you div _ 0, you can easily do Knight Capital Mark 2: https://www.henricodolfing.com/2019/06/project-failure-case-study-knight-capital.html
2023-10-11 18:13:10 +0200 <EvanR> I managed to put in an infinite loop and observe the strictness
2023-10-11 18:13:16 +0200 <EvanR> no exceptions but nothing good either
2023-10-11 18:13:28 +0200 <[exa]> I'll do with Elm
2023-10-11 18:13:40 +0200 <haskellbridge> <I​nst> how can you observe the strictness if the strictness is infinite?
2023-10-11 18:13:51 +0200 <geekosaur> Injst, please don't do edits in here (see the Matrix-side topic)
2023-10-11 18:14:01 +0200 <geekosaur> *Inst
2023-10-11 18:14:02 +0200 <[exa]> infinite things are noticeably easy to observe due to size
2023-10-11 18:14:10 +0200 <haskellbridge> <I​nst> yeah, undersstood
2023-10-11 18:14:24 +0200 <haskellbridge> <I​nst> it was _ / 0, edited to div _ 0 defined as 0
2023-10-11 18:15:02 +0200remexre(~remexre@user/remexre)
2023-10-11 18:17:05 +0200 <geekosaur> yes, and the bridge repeated the whole message because IRC doesn't support edits
2023-10-11 18:17:42 +0200 <geekosaur> this is an IRC channel to which I have provided Matrix access, with some constraints. if those constraints are violated I can and will shut down the bridge
2023-10-11 18:18:29 +0200danse-nr3(~francesco@151.37.182.55)
2023-10-11 18:18:45 +0200Guest22(~Guest22@136.25.94.94)
2023-10-11 18:18:48 +0200 <haskellbridge> <I​nst> I see, understood, sorry, it's become habitual. And yeah, I usually use the IRC side, but trying to cut down on wasteful social media use.
2023-10-11 18:18:54 +0200Guest22(~Guest22@136.25.94.94) (Client Quit)
2023-10-11 18:18:56 +0200ghoulguy(g@libera/staff/glguy) (Quit: Quit)
2023-10-11 18:18:56 +0200g(g@libera/staff/glguy) (Remote host closed the connection)
2023-10-11 18:19:16 +0200EitanCh(~EitanCh@136.25.94.94)
2023-10-11 18:19:48 +0200g(g@libera/staff/glguy)
2023-10-11 18:20:18 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-10-11 18:20:48 +0200glguy(g@libera/staff/glguy)
2023-10-11 18:23:40 +0200 <EitanCh> Hello, I'm trying to define an analog for the `many` Alternative combinator for Profunctors but when I try to use it it infinite loops on me. The definition involves mutual recursion. Am I missing something obvious that causes it to loop forever? Here's the code:
2023-10-11 18:23:41 +0200 <EitanCh>   several
2023-10-11 18:23:41 +0200 <EitanCh>     :: (Cons s s a a, Cons t t b b, Monoid t)
2023-10-11 18:23:42 +0200 <EitanCh>     => p a b -> p s t
2023-10-11 18:23:42 +0200 <EitanCh>   several p = several_p where
2023-10-11 18:23:43 +0200 <EitanCh>     several_p = withIso _Stream $ \f g ->
2023-10-11 18:23:43 +0200 <EitanCh>       dimap f g (pure () >+< several1_p)
2023-10-11 18:23:43 +0200EitanCh(~EitanCh@136.25.94.94) (Killed (ozone (No Spam)))
2023-10-11 18:24:44 +0200DemonDerg(A_D@libera/staff/dragon)
2023-10-11 18:26:22 +0200 <geekosaur> they are, but oh well
2023-10-11 18:27:13 +0200 <EvanR> so the network is on spam alert high
2023-10-11 18:27:22 +0200 <EvanR> spam alert elevateed
2023-10-11 18:27:42 +0200 <geekosaur> well, yes. have you not noticed all the "just paste it" spam of late?
2023-10-11 18:27:47 +0200 <EvanR> yes
2023-10-11 18:27:53 +0200 <geekosaur> and we got spammed by supernets the other day too
2023-10-11 18:28:05 +0200 <DemonDerg> was that a misban?
2023-10-11 18:28:19 +0200 <geekosaur> yeh, just someone pasting a question into the channel
2023-10-11 18:28:24 +0200 <geekosaur> which ozone didn't like
2023-10-11 18:28:41 +0200 <DemonDerg> what was the nick?
2023-10-11 18:28:44 +0200 <geekosaur> (we don't either, but first timers don't know that)
2023-10-11 18:28:47 +0200 <geekosaur> EitanCh
2023-10-11 18:29:50 +0200 <DemonDerg> removed
2023-10-11 18:29:56 +0200 <geekosaur> thank you
2023-10-11 18:30:27 +0200 <ncf> dolio: do you have a recommended resource for game semantics and type theory?
2023-10-11 18:31:14 +0200danse-nr3failing to "quickly reach out to them"
2023-10-11 18:31:34 +0200 <ncf> i guess the nlab has two
2023-10-11 18:31:51 +0200 <geekosaur> not sure they'd be trying again quickly after being klined
2023-10-11 18:32:01 +0200 <dolio> Not really. This explains a little, though: https://www.youtube.com/watch?v=uY5LubwJ1Xo
2023-10-11 18:32:12 +0200 <DemonDerg> unfortunately yeah
2023-10-11 18:33:05 +0200 <danse-nr3> maybe we can leave a message through the bot?
2023-10-11 18:33:20 +0200 <ncf> ah, that's the author of one of the papers i found (now "withdrawn" from arxiv, but you can still read it, wtf?)
2023-10-11 18:34:08 +0200danse-nr3(~francesco@151.37.182.55) (Remote host closed the connection)
2023-10-11 18:34:33 +0200danse-nr3(~francesco@151.37.182.55)
2023-10-11 18:34:43 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk) (Ping timeout: 258 seconds)
2023-10-11 18:35:12 +0200 <DemonDerg> also while Im looking about, you all seen any extra supernets spam or so today?
2023-10-11 18:36:54 +0200chele(~chele@user/chele) (Remote host closed the connection)
2023-10-11 18:38:06 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds)
2023-10-11 18:38:12 +0200 <EvanR> types are games and terms are strategies
2023-10-11 18:38:33 +0200Square3(~Square4@user/square)
2023-10-11 18:38:50 +0200 <dolio> Yeah, I guess I should have said "strategy" above.
2023-10-11 18:39:46 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34)
2023-10-11 18:39:51 +0200 <dolio> For the two distinct values of Maybe a -> Maybe b.
2023-10-11 18:42:16 +0200 <danse-nr3> hum so i guess a term is what i used to call a type's "value"
2023-10-11 18:42:45 +0200 <dolio> Well, terms are syntactic things.
2023-10-11 18:42:51 +0200 <dolio> Terms denote strategies.
2023-10-11 18:44:04 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 18:46:22 +0200 <danse-nr3> i see, thanks
2023-10-11 18:47:25 +0200 <geekosaur> DemonDerg, not today. had some jp.it last night but I didn't wake up to any this morning for a change
2023-10-11 18:48:01 +0200 <geekosaur> btw there used to be some protocol for chanops to follow if ozone incorrectly klined someone, does that still exist?
2023-10-11 18:48:07 +0200 <DemonDerg> it does
2023-10-11 18:48:17 +0200 <DemonDerg> be opped and message it unkline $nick, IIRC
2023-10-11 18:48:40 +0200 <geekosaur> thank you
2023-10-11 18:48:46 +0200 <DemonDerg> https://libera.chat/guides/bots#ozone
2023-10-11 18:49:09 +0200 <DemonDerg> should also op any bots you have in here
2023-10-11 18:49:12 +0200 <DemonDerg> sorry, voice
2023-10-11 18:49:13 +0200 <DemonDerg> not op
2023-10-11 18:49:18 +0200 <DemonDerg> apologies, long day
2023-10-11 18:50:39 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-11 18:51:04 +0200 <geekosaur> that one's not up to me, I'll mention it in the ops channel
2023-10-11 18:51:15 +0200hiyori(~hiyori@user/hiyori) (Quit: Client closed)
2023-10-11 18:52:01 +0200stites(~stites@130.44.147.204) (Ping timeout: 252 seconds)
2023-10-11 18:52:33 +0200stites(~stites@2607:fb91:dc8:e0e2:5656:70eb:8498:35ff)
2023-10-11 18:54:31 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 19:03:40 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34) (Remote host closed the connection)
2023-10-11 19:04:42 +0200AlexNoo_(~AlexNoo@94.233.241.173)
2023-10-11 19:05:06 +0200euleritian(~euleritia@46.114.206.159) (Read error: Connection reset by peer)
2023-10-11 19:05:23 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 19:06:47 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2023-10-11 19:07:32 +0200AlexZenon(~alzenon@178.34.163.10) (Ping timeout: 255 seconds)
2023-10-11 19:07:49 +0200Alex_test(~al_test@178.34.163.10) (Ping timeout: 255 seconds)
2023-10-11 19:07:59 +0200AlexNoo(~AlexNoo@178.34.163.10) (Ping timeout: 245 seconds)
2023-10-11 19:08:15 +0200AlexNoo_AlexNoo
2023-10-11 19:08:20 +0200emergence(emergence@2607:5300:60:5910:dcad:beff:feef:5bc)
2023-10-11 19:09:50 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 19:09:57 +0200asivitz(uid178348@id-178348.tinside.irccloud.com)
2023-10-11 19:10:41 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 19:11:12 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34)
2023-10-11 19:12:28 +0200ChanServ+o monochrom
2023-10-11 19:12:31 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2023-10-11 19:12:53 +0200ChanServ+v lambdabot
2023-10-11 19:13:06 +0200ChanServ+v yahb2
2023-10-11 19:13:07 +0200Alex_test(~al_test@94.233.241.173)
2023-10-11 19:13:22 +0200ChanServ+v haskellbridge
2023-10-11 19:13:30 +0200monochrom-o monochrom
2023-10-11 19:13:47 +0200AlexZenon(~alzenon@94.233.241.173)
2023-10-11 19:15:21 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-11 19:15:31 +0200lg188(~lg188@82.18.98.230) (Quit: Bye.)
2023-10-11 19:16:16 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-10-11 19:16:42 +0200danse-nr3(~francesco@151.37.182.55) (Ping timeout: 260 seconds)
2023-10-11 19:21:10 +0200lg188(~lg188@82.18.98.230)
2023-10-11 19:25:38 +0200lg188(~lg188@82.18.98.230) (Read error: Connection reset by peer)
2023-10-11 19:25:46 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-10-11 19:27:49 +0200lg188(~lg188@82.18.98.230)
2023-10-11 19:30:08 +0200lg188(~lg188@82.18.98.230) (Read error: Connection reset by peer)
2023-10-11 19:32:59 +0200 <EvanR> Data.ByteString docs state that it is suitable for high performance, then it says it's implemented as a ForeignPtr. Does this mean ByteStrings have FFI overhead or is FFI not involved
2023-10-11 19:33:13 +0200stites(~stites@2607:fb91:dc8:e0e2:5656:70eb:8498:35ff) (Read error: Connection reset by peer)
2023-10-11 19:33:39 +0200stites(~stites@130.44.147.204)
2023-10-11 19:34:40 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 255 seconds)
2023-10-11 19:34:49 +0200simendsjo(~user@84.211.91.241)
2023-10-11 19:36:52 +0200 <EvanR> also when looking at how BS.takeWhile is implemented I noticed accursedUnutterablePerformIO, which I thought was considered unprofessional and renamed xD
2023-10-11 19:37:42 +0200 <EvanR> which also answers the question because there's the FFI
2023-10-11 19:38:46 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:8c8d:37ea:f5b2:d34) (Remote host closed the connection)
2023-10-11 19:39:41 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk)
2023-10-11 19:41:12 +0200 <geekosaur> ByteString is what invented it… and discovered why it's a bad idea
2023-10-11 19:41:20 +0200 <geekosaur> but they still use it for performance
2023-10-11 19:41:37 +0200 <geekosaur> and yes, it FFIs again for performance
2023-10-11 19:41:57 +0200ski(~ski@88.131.7.247)
2023-10-11 19:42:23 +0200 <geekosaur> I think they cheat there and use unsafe calls? which avoids the overhead but they have to be very careful with it
2023-10-11 19:42:55 +0200 <geekosaur> then again they're looking for performance so they're avoiding anything that would block and thereby be unsafe from a FFI standpoint
2023-10-11 19:48:18 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-11 19:48:34 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-10-11 19:51:14 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:24c5:ca27:9366:8391)
2023-10-11 19:53:50 +0200Simikando(~Simikando@adsl-dyn230.91-127-81.t-com.sk) (Remote host closed the connection)
2023-10-11 19:55:58 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:24c5:ca27:9366:8391) (Ping timeout: 272 seconds)
2023-10-11 19:56:55 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 20:02:44 +0200 <EvanR> FFI has more performance than what, using a primitive array?
2023-10-11 20:04:46 +0200 <[exa]> ok so today I learned that Elm ain't very good for functional programming. :D
2023-10-11 20:05:10 +0200 <EvanR> yeeeeeaahh....
2023-10-11 20:05:33 +0200 <[exa]> "error: too much recursion" when trying elm/parser to do JSON, like, where are we
2023-10-11 20:05:49 +0200 <[exa]> there's never enough recursion!
2023-10-11 20:06:22 +0200 <EvanR> what a disgrace
2023-10-11 20:07:48 +0200 <[exa]> somehow I tend to understand "compile to javascript" a bit more elaborately as "direct source-to-source homomorphism to javascript"
2023-10-11 20:07:58 +0200 <[exa]> *than
2023-10-11 20:08:13 +0200 <[exa]> ok nvm probably time to write my own language for this. :D
2023-10-11 20:13:14 +0200 <EvanR> what made you go for Elm over purescript
2023-10-11 20:13:31 +0200Square3(~Square4@user/square) (Ping timeout: 264 seconds)
2023-10-11 20:15:22 +0200rgw(~R@2605:a601:a0df:5600:786b:f462:3e9c:5be6)
2023-10-11 20:15:26 +0200 <[exa]> I somehow thought it's not eager.
2023-10-11 20:15:40 +0200 <[exa]> ;_;
2023-10-11 20:16:12 +0200misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 240 seconds)
2023-10-11 20:17:33 +0200 <mauke> no warnings qw(recursion); # if this were perl ...
2023-10-11 20:17:43 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 20:18:15 +0200 <monochrom> haha
2023-10-11 20:18:55 +0200 <monochrom> But yeah I'm disappointed. It is no longer rocket science to write a translator that does CPS and trampolining for you.
2023-10-11 20:19:03 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-10-11 20:19:17 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-10-11 20:20:24 +0200 <monochrom> Then again there is a conflict between "translate to js but preserve semantics" and "translate to js but make it idiomatic js".
2023-10-11 20:20:40 +0200 <monochrom> s/semantics/source-language semantics/ to be precise
2023-10-11 20:20:56 +0200 <mauke> do you know a language that has explicit tail calls? i.e. where the programmer can say "jump to this function over there, no return"
2023-10-11 20:21:12 +0200 <monochrom> Does iptables count? :)
2023-10-11 20:21:22 +0200 <mauke> I was about to say, outside of asm
2023-10-11 20:21:45 +0200 <mauke> iptables looks to me like a similar idea, just chains of instructions
2023-10-11 20:22:03 +0200 <monochrom> I think Scheme counts, but perhaps indirectly.
2023-10-11 20:22:06 +0200 <geekosaur> I feel like I've seen a language that has `goto <some function>` but I'm not recalling it
2023-10-11 20:22:12 +0200 <mauke> that's perl
2023-10-11 20:22:18 +0200 <geekosaur> oh, right
2023-10-11 20:22:45 +0200 <mauke> I'm wondering if perl invented it or whether there's precedent elsewhere
2023-10-11 20:22:46 +0200 <geekosaur> been too long
2023-10-11 20:22:49 +0200 <monochrom> Scheme's definition makes it completely predictable which calls become tail calls and the others don't.
2023-10-11 20:22:55 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:acbe:e88a:3adf:3c7b)
2023-10-11 20:23:21 +0200 <mauke> scheme is more on the side of guaranteed optimizations, I'd say
2023-10-11 20:23:27 +0200 <mauke> along the lines of ApplicativeDo
2023-10-11 20:23:35 +0200 <monochrom> Yeah that's true.
2023-10-11 20:24:41 +0200 <EvanR> llvm has explicit tail calls, C--?
2023-10-11 20:25:00 +0200 <[exa]> monochrom: "idiomatic js" and then people claim react+jsx outputs as good :D
2023-10-11 20:26:11 +0200 <mauke> EvanR: ok, but those aren't meant to be written by humans
2023-10-11 20:26:26 +0200 <mauke> I was looking for more high-level things :-)
2023-10-11 20:26:34 +0200 <monochrom> llvm is too close to asm
2023-10-11 20:26:58 +0200 <[exa]> mauke: does 'yield' count?
2023-10-11 20:27:12 +0200 <monochrom> In fact, too close to ideal asm, too. You actually write single-assignments and phi nodes!
2023-10-11 20:27:46 +0200 <mauke> [exa]: in a way, yield is the exact opposite
2023-10-11 20:27:48 +0200 <[exa]> mauke: also maybe you were searching for........high level assembler, the gem of IBM!
2023-10-11 20:28:19 +0200 <mauke> yield returns up instead of calling deeper, and it can return instead of making everything after it unreachable
2023-10-11 20:28:46 +0200 <ski> "proper tail recursion" in Scheme is not an optimization (and doesn't need to be implemented via TCO), it's a language guarantee (about asymptotic space usage of a (conforming) implementation (that it can support an unbounded number of active tail calls in bounded space))
2023-10-11 20:29:12 +0200danza(~francesco@151.37.182.55)
2023-10-11 20:33:32 +0200 <EvanR> llvm, portable assembly. Unlike C
2023-10-11 20:34:38 +0200 <EvanR> is proper tail recursion the technical name in scheme?
2023-10-11 20:34:56 +0200 <ski> yes
2023-10-11 20:35:01 +0200 <EvanR> nice
2023-10-11 20:35:31 +0200 <ski> in Prolog, the term is "Last Call" as opposed to "Tail Call" (the concept was discovered independently in LP)
2023-10-11 20:37:36 +0200 <ski> (there's also TCMC, Tail-Call Modulo Cons(tructor), where you (e.g.) first construct the cons cell of the list, then pass the address of the tail field in the cell to the (usually) recursive call, to fill in (initialize/instantiate) the rest .. the Logic/Functional programming language Mercury can do this, and OCaml also has some support)
2023-10-11 20:38:32 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2023-10-11 20:39:22 +0200 <ski> (i recall reading somewhere that because Erlang doesn't have TCMC, a serialization framework for it decided to serialize the elements of lists in reverse order, so that when deserializing it can reconstruct the list with a tail recursion)
2023-10-11 20:41:05 +0200 <mauke> should've had first-class lvalues :-D
2023-10-11 20:41:09 +0200 <EvanR> to be clear, are we talking about construction an entire actual list in memory
2023-10-11 20:41:18 +0200 <ski> yes
2023-10-11 20:41:23 +0200 <EvanR> crazy
2023-10-11 20:41:35 +0200 <mauke> the depravity
2023-10-11 20:42:55 +0200 <EvanR> many languages, purescript included, seem to have a facility for doing lazy list processing in an otherwise non-lazy language. But I don't often see people in those languages enthusiastic about it
2023-10-11 20:43:09 +0200 <monochrom> Well this being OCaml etc., "map f (x:xs) = f x : map f xs" is a bit sad until TCMC.
2023-10-11 20:43:09 +0200 <EvanR> I wonder if it's just cargo culting xD
2023-10-11 20:44:10 +0200 <monochrom> Well yeah most people aren't thrilled about lazy evaluation.
2023-10-11 20:45:08 +0200 <dolio> Why use lazy evaluation when you can manually convolute your program so that things happen in the right order?
2023-10-11 20:45:29 +0200 <monochrom> I like lazy evaluation because I see the half-full glass that offers "map f (x:xs) = f x : map f xs is already constant-space without doing anything special"
2023-10-11 20:46:00 +0200 <monochrom> But other people see the half-empty glass that offers "foldl (+) 0 xs is linear space"
2023-10-11 20:46:29 +0200 <mauke> map f xs = x <- await xs; yield (f x); map f xs
2023-10-11 20:48:20 +0200ski(~ski@88.131.7.247) (Ping timeout: 255 seconds)
2023-10-11 20:49:06 +0200 <EvanR> foldl not prime on list is a fully empty glass, unless you're implementing last
2023-10-11 20:49:45 +0200 <EvanR> why isn't your map example fully full ? xD
2023-10-11 20:50:04 +0200 <EvanR> (also, fully empty? wtf)
2023-10-11 20:50:20 +0200 <monochrom> Because lazy evaluation is a superposition of both :)
2023-10-11 20:53:21 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri) (Quit: WeeChat 4.0.5)
2023-10-11 20:53:59 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
2023-10-11 20:54:10 +0200 <EvanR> is that why we don't want to redefine foldl to be strict, we want to be reminded of the flaws in our ways
2023-10-11 20:54:46 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri)
2023-10-11 20:55:06 +0200 <EvanR> better to admit it than paper over it and hide the truth
2023-10-11 20:55:43 +0200 <mauke> @src foldl'
2023-10-11 20:55:43 +0200 <lambdabot> foldl' f a [] = a
2023-10-11 20:55:43 +0200 <lambdabot> foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
2023-10-11 20:55:48 +0200 <nullie> isn't lazy evaluation a leaky abstraction?
2023-10-11 20:56:00 +0200 <monochrom> No, I think we are just too polite to change historical definitions, even those that were flawed.
2023-10-11 20:56:01 +0200 <mauke> is foldl' guaranteed to work any better?
2023-10-11 20:56:24 +0200 <monochrom> Just look at how people are too polite to actually delete things on the haskell wiki.
2023-10-11 20:56:52 +0200 <monochrom> Yes.
2023-10-11 20:57:28 +0200 <EvanR> foldl' arguably works worse when defining last
2023-10-11 20:57:35 +0200 <mauke> why?
2023-10-11 20:57:35 +0200 <EvanR> which no one ever does
2023-10-11 20:58:02 +0200 <dolio> mauke: Because it blows up if any non-last elements are undefined.
2023-10-11 20:58:21 +0200 <dolio> If I recall.
2023-10-11 20:58:52 +0200 <mauke> no, why is foldl' guaranteed to work better for summing?
2023-10-11 20:59:07 +0200lg188(~lg188@82.18.98.230)
2023-10-11 20:59:41 +0200 <monochrom> You have: let a'=a+x in seq a' (foldl' (+) a' xs)
2023-10-11 21:00:20 +0200 <mauke> seq a b = seq b (seq a b)
2023-10-11 21:00:57 +0200 <monochrom> Well OK, next we have to choose one of two paths.
2023-10-11 21:01:00 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-11 21:01:38 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-10-11 21:02:01 +0200 <monochrom> One path is: You say that the Haskell Report promises strictness only, but then a compiler adds optimizations based on strictness, so a+x is evaluated earlier.
2023-10-11 21:02:11 +0200danza(~francesco@151.37.182.55) (Ping timeout: 255 seconds)
2023-10-11 21:02:19 +0200gehmehgeh(~user@user/gehmehgeh)
2023-10-11 21:02:23 +0200 <monochrom> The other path is: I say that seq promises evaluation order in the context of lazy evaluation.
2023-10-11 21:03:05 +0200 <monochrom> I know, neither path is actually completely guaranteed by any signed rubber-stamped documents.
2023-10-11 21:05:11 +0200 <monochrom> But what else is guaranteed by the Haskell Report anyway apart from syntax? :)
2023-10-11 21:05:43 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-10-11 21:05:45 +0200 <dolio> It would take extra work to provide the right semantics without making the sum cases better, I think.
2023-10-11 21:06:26 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:acbe:e88a:3adf:3c7b) (Remote host closed the connection)
2023-10-11 21:06:41 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:acbe:e88a:3adf:3c7b)
2023-10-11 21:07:46 +0200 <monochrom> I raise two points outside the signed rubber-stamped documents.
2023-10-11 21:08:51 +0200 <monochrom> 1. Consider why it ends up being named "seq" rather than, say, "strict". (In fact, an old textbook of Bird called it "strict". (And went on to show the confusion between strict/non-strict and eager/lazy.))
2023-10-11 21:09:23 +0200privacy(~privacy@user/privacy)
2023-10-11 21:10:46 +0200 <monochrom> 2. John Hughes in an interview said: His contribution was adding a way to disable laziness to solve the space problem.
2023-10-11 21:10:50 +0200lg188(~lg188@82.18.98.230) (Ping timeout: 255 seconds)
2023-10-11 21:11:33 +0200 <EvanR> also language gains meaning through use, and that's how/why it's used
2023-10-11 21:11:43 +0200 <monochrom> The intention of seq is very much eagerness, despite how the committee was too afraid to put in black on white.
2023-10-11 21:13:45 +0200 <mauke> seq (error "a") (error "b")
2023-10-11 21:14:07 +0200 <EvanR> > seq (error "a") (error "b")
2023-10-11 21:14:09 +0200 <lambdabot> *Exception: a
2023-10-11 21:14:18 +0200 <mauke> I don't think ghc guarantees "a"
2023-10-11 21:14:18 +0200 <EvanR> cromulent
2023-10-11 21:14:43 +0200 <EvanR> at least that test doesn't contradict the arguments made by monochrom
2023-10-11 21:14:52 +0200 <monochrom> You are right about that. When there are two errors to choose from, GHC optimizations can end up choosing the unexpected one.
2023-10-11 21:14:54 +0200 <mauke> true, but why does pseq exist?
2023-10-11 21:14:56 +0200 <dolio> It's not about "afraid." Imposing an exact evaluation order is less useful.
2023-10-11 21:15:08 +0200 <EvanR> but not I kind of see the value in rubber stamped documents "guaranteeing" something, it makes this entire discussion miraculously unnecessary
2023-10-11 21:15:20 +0200 <EvanR> now*
2023-10-11 21:16:07 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:acbe:e88a:3adf:3c7b) (Remote host closed the connection)
2023-10-11 21:16:15 +0200 <monochrom> But foldl' (+) 0 [1..10000] contains no errors. The same strictness analysis and optimizations will keep it constant space.
2023-10-11 21:17:08 +0200 <dolio> You want to enable the compiler to make good decisions about the exact evaluation order given the local context it has. For sum, the compiler knows what to do as long as it isn't required to give the non-strict semantics.
2023-10-11 21:17:32 +0200 <dolio> That you can be a pedantic dipshit and say, "technically it could do something really bad instead," is irrelevant.
2023-10-11 21:18:05 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-10-11 21:21:39 +0200 <monochrom> pseq exists because, hell, even today, GHC optimizer isn't quite aware of parallelization.
2023-10-11 21:25:29 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-10-11 21:27:42 +0200phma_(~phma@host-67-44-208-58.hnremote.net)
2023-10-11 21:31:11 +0200 <monochrom> You know what, I don't think even standard C states that "x = 0;" takes constant space or constant time. :)
2023-10-11 21:31:13 +0200phma(~phma@host-67-44-208-58.hnremote.net) (Ping timeout: 255 seconds)
2023-10-11 21:31:59 +0200YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7) (Read error: Connection reset by peer)
2023-10-11 21:32:07 +0200 <mauke> I wonder if C even has time
2023-10-11 21:32:14 +0200YuutaW(~YuutaW@2404:f4c0:f9c3:502::100:17b7)
2023-10-11 21:44:10 +0200 <EvanR> as you approach C time comes to a stop so no
2023-10-11 21:46:55 +0200 <monochrom> haha
2023-10-11 21:47:05 +0200 <monochrom> @quote monochrom einstein
2023-10-11 21:47:06 +0200 <lambdabot> monochrom says: einstein's theory implies that haskell cannot be faster than c
2023-10-11 21:47:30 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri) (Quit: WeeChat 4.0.5)
2023-10-11 21:48:33 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:5d3c:fd45:6dba:f35a)
2023-10-11 21:49:05 +0200iteratee(~kyle@162.218.222.207) (Ping timeout: 255 seconds)
2023-10-11 21:49:30 +0200iteratee(~kyle@162.218.222.207)
2023-10-11 21:49:54 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri)
2023-10-11 21:50:47 +0200 <EvanR> right now I'm trying to write a haskell version of a tool script in the zig codebase. Right now with optimizations I'm at .043ms while the zig version is .005ms
2023-10-11 21:52:05 +0200 <EvanR> 11% zig
2023-10-11 21:53:00 +0200 <mauke> move `zig`
2023-10-11 21:54:15 +0200 <EvanR> hopefully I can pick up some time by going through ByteString instead of String I/O
2023-10-11 21:55:51 +0200 <mauke> what does the tool do?
2023-10-11 21:56:17 +0200iteratee(~kyle@162.218.222.207) (Ping timeout: 255 seconds)
2023-10-11 21:56:29 +0200lg188(~lg188@82.18.98.230)
2023-10-11 21:56:33 +0200iteratee(~kyle@162.218.222.207)
2023-10-11 21:57:49 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-10-11 21:58:25 +0200 <EvanR> it extracts syscall numbers from linux source code from various files and creates a zig file
2023-10-11 21:58:39 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
2023-10-11 21:59:36 +0200 <EvanR> well the product just goes to stdout
2023-10-11 21:59:54 +0200 <mauke> ah, like h2ph / syscall.ph
2023-10-11 22:03:26 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-10-11 22:05:16 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-10-11 22:06:01 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-10-11 22:09:35 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-10-11 22:11:48 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-10-11 22:12:58 +0200ft(~ft@p3e9bc680.dip0.t-ipconnect.de)
2023-10-11 22:15:58 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-10-11 22:28:01 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 22:37:12 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net)
2023-10-11 22:39:23 +0200__monty__(~toonn@user/toonn) (Ping timeout: 255 seconds)
2023-10-11 22:39:45 +0200__monty__(~toonn@user/toonn)
2023-10-11 22:41:57 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-10-11 22:41:57 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-10-11 22:41:57 +0200wroathe(~wroathe@user/wroathe)
2023-10-11 22:47:27 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-10-11 22:53:41 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-10-11 22:58:32 +0200michalz(~michalz@185.246.207.200) (Remote host closed the connection)
2023-10-11 23:01:13 +0200pavonia(~user@user/siracusa)
2023-10-11 23:05:28 +0200phma_phma
2023-10-11 23:06:03 +0200myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-10-11 23:10:22 +0200simendsjo(~user@84.211.91.241) (Ping timeout: 255 seconds)
2023-10-11 23:13:05 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-10-11 23:14:49 +0200billchenchina(~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving)
2023-10-11 23:18:23 +0200fendor(~fendor@2a02:8388:1640:be00:aab:1226:f274:5021) (Remote host closed the connection)
2023-10-11 23:22:20 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-11 23:24:02 +0200cpressey(~cpressey@host-2-102-11-74.as13285.net) (Quit: Client closed)
2023-10-11 23:27:27 +0200wroathe(~wroathe@user/wroathe)
2023-10-11 23:30:04 +0200acidjnk(~acidjnk@p200300d6e7072f8019cae40178150491.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-10-11 23:32:05 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
2023-10-11 23:42:05 +0200Jackneill(~Jackneill@20014C4E1E021C00E4226B7959631CE0.dsl.pool.telekom.hu) (Ping timeout: 240 seconds)
2023-10-11 23:42:12 +0200Inst(~Inst@120.244.192.250)
2023-10-11 23:42:35 +0200 <Inst> what are the efficiency advantages of a list comprehension vs filter?
2023-10-11 23:44:01 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-10-11 23:45:18 +0200 <davean> Inst: I mean list comprehensions are far more powerful than filter.
2023-10-11 23:45:57 +0200 <davean> You're comparing a helicopter to a ski lift. Thy can both get you up the mountain. Whats the efficiency difference? For doing what filter can do?
2023-10-11 23:46:07 +0200 <Inst> i guess it's more easy to extend, I'm discussing code in cabal, and I'm surprised this is being done via a list comprehension instead of a filter, but I'm called a point-free addict sometimes
2023-10-11 23:46:10 +0200 <haskellbridge> <s​m> did you mean list comprehensions vs standard function composition ? no difference I think
2023-10-11 23:46:39 +0200 <haskellbridge> <s​m> it's a readability choice
2023-10-11 23:46:55 +0200 <Inst> [ cmd | cmd@(Command cname' _ _ _) <- commands', cname' == cname] vs
2023-10-11 23:47:13 +0200 <Inst> filter (\(Command cname' _ _ _) -> cname' == cname)
2023-10-11 23:47:16 +0200 <geekosaur> @undo [ cmd | cmd@(Command cname' _ _ _) <- commands', cname' == cname]
2023-10-11 23:47:16 +0200 <lambdabot> concatMap (\ a -> case a of { cmd@(Command cname' _ _ _) -> if cname' == cname then [cmd] else []; _ -> []}) commands'
2023-10-11 23:47:47 +0200 <davean> geekosaur: that is the worst undo of that ...
2023-10-11 23:47:52 +0200 <geekosaur> yeh
2023-10-11 23:47:59 +0200 <davean> I'd be hard pressed to write a worse version of undoing it.
2023-10-11 23:47:59 +0200 <geekosaur> thought it used map and filter these days
2023-10-11 23:48:19 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds)
2023-10-11 23:49:00 +0200 <Inst> iirc list comprehensions desugar to concatmap
2023-10-11 23:49:18 +0200 <geekosaur> they only do if MonadComprehensions is in effect, I think
2023-10-11 23:51:12 +0200ChanServ+o litharge
2023-10-11 23:51:13 +0200litharge-bo *!*@190.123.41.211 litharge
2023-10-11 23:52:17 +0200 <monochrom> I think there are two points. 1. List comprehension and filter go through different pathways in GHC. 2. But end up being the same asm code.
2023-10-11 23:52:19 +0200 <geekosaur> yeh, 0-ddump-ds shows no use of concatMap
2023-10-11 23:56:46 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-10-11 23:57:19 +0200privacy(~privacy@user/privacy) (Quit: Leaving)