2024/11/07

2024-11-07 00:00:01 +0100wryishly(~wryish@216.246.119.62) (Ping timeout: 248 seconds)
2024-11-07 00:00:04 +0100rune_(sid21167@id-21167.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2024-11-07 00:00:04 +0100snek(sid280155@id-280155.lymington.irccloud.com) (Ping timeout: 260 seconds)
2024-11-07 00:00:27 +0100jjhoo(~jahakala@user/jjhoo) jjhoo
2024-11-07 00:00:29 +0100Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no) Miroboru
2024-11-07 00:00:29 +0100hacklschorsch(~flo@2a01:4f9:3a:2296::2)
2024-11-07 00:00:45 +0100s4msung(~s4msung@user/s4msung) s4msung
2024-11-07 00:00:51 +0100NiKaN(sid385034@id-385034.helmsley.irccloud.com) NiKaN
2024-11-07 00:00:54 +0100snek(sid280155@id-280155.lymington.irccloud.com) snek
2024-11-07 00:00:55 +0100rune_(sid21167@id-21167.ilkley.irccloud.com)
2024-11-07 00:01:11 +0100Techcable(sid534393@user/Techcable) Techcable
2024-11-07 00:01:11 +0100tritlo(sid58727@id-58727.hampstead.irccloud.com)
2024-11-07 00:01:24 +0100aristid(sid1599@id-1599.uxbridge.irccloud.com)
2024-11-07 00:01:49 +0100thaumavorio(~thaumavor@thaumavor.io) thaumavorio
2024-11-07 00:01:54 +0100notzmv(~daniel@user/notzmv) (Ping timeout: 246 seconds)
2024-11-07 00:04:14 +0100 <probie> When did Haskell get the IO type? ~1996?
2024-11-07 00:04:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 00:04:41 +0100Square2(~Square4@user/square) Square
2024-11-07 00:04:51 +0100alexherbo2(~alexherbo@2a02-8440-341a-456e-a8d1-f94d-35c3-2d26.rev.sfr.net) alexherbo2
2024-11-07 00:05:44 +0100 <Rembane> Yeah, it's a bit older, 1993ish. https://ncatlab.org/nlab/show/IO-monad
2024-11-07 00:05:47 +0100 <Rembane> https://dl.acm.org/doi/10.1145/158511.158524
2024-11-07 00:06:03 +0100 <EvanR> uniqueness types?
2024-11-07 00:07:28 +0100Square(~Square@user/square) (Ping timeout: 245 seconds)
2024-11-07 00:07:30 +0100 <dolio> 1.3 is the first report with it.
2024-11-07 00:07:44 +0100Square2Square
2024-11-07 00:08:56 +0100 <dolio> The 1993 citation is dated 1992 if you click on it. :รพ
2024-11-07 00:09:03 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-11-07 00:09:27 +0100 <Rembane> Good stuff :D
2024-11-07 00:09:38 +0100 <Rembane> This is why I don't trust time
2024-11-07 00:10:03 +0100 <EvanR> the researcher was merlin, who famously experienced time backwards
2024-11-07 00:10:12 +0100 <dolio> Ah, of course.
2024-11-07 00:12:20 +0100 <Rembane> It must've been a real trip to talk to him
2024-11-07 00:13:59 +0100 <dolio> Even the 1.0 report has the continuation based I/O which, if you looked at it today, you might figure out it could be factored into a monad.
2024-11-07 00:15:10 +0100 <dolio> It's like every IO operation has (>>=) stuck onto it already, and maybe catch.
2024-11-07 00:16:02 +0100 <Inst> Clean predates Haskell, interestingly enough.
2024-11-07 00:17:21 +0100unlucy(sid572875@user/unlucy) unlucy
2024-11-07 00:17:46 +0100 <Rembane> How does Clean before Haskell handle IO?
2024-11-07 00:19:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 00:22:12 +0100 <int-e> "Consequently, a Clean program consists of a set of rewrite rules." -- 1987 Clean was a language for expressing graph rewriting systems.
2024-11-07 00:22:41 +0100 <int-e> cf. https://wiki.clean.cs.ru.nl/Publications#1987
2024-11-07 00:23:16 +0100visilii(~visilii@85.172.77.90) (Quit: ZNC - https://znc.in)
2024-11-07 00:23:34 +0100visilii(~visilii@85.172.77.90)
2024-11-07 00:23:48 +0100 <probie> https://www.mbsd.cs.ru.nl/publications/papers/1992/achp92-HighLevelIO.pdf 1992 seems to be where IO appears in Clear
2024-11-07 00:24:20 +0100 <int-e> stdin was provided as a list of newline-terminated lines. So it's the main :: [String] -> [String] type of I/O.
2024-11-07 00:24:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-07 00:24:54 +0100 <Rembane> Isn't that how very early Haskell did I/O?
2024-11-07 00:25:20 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-07 00:25:22 +0100 <dolio> Sort of. But the types are more complex, I think.
2024-11-07 00:25:44 +0100 <dolio> Not just strings.
2024-11-07 00:25:57 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-11-07 00:26:12 +0100 <int-e> Hmm 1988 has a related language called LEAN? Hehe.
2024-11-07 00:26:36 +0100 <Rembane> I need the languages EAN, AN and N too.
2024-11-07 00:26:42 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2024-11-07 00:26:52 +0100CrunchyFlakes(~CrunchyFl@31.19.233.78)
2024-11-07 00:27:18 +0100Everything(~Everythin@178-133-140-206.mobile.vf-ua.net) (Remote host closed the connection)
2024-11-07 00:27:38 +0100 <probie> I think `UNQ` in early Clean appears slightly before monadic IO in early Haskell, since the first monadic IO paper that's been found so far references the Clean one.
2024-11-07 00:27:43 +0100visilii(~visilii@85.172.77.90) (Client Quit)
2024-11-07 00:28:36 +0100visilii(~visilii@85.172.77.90)
2024-11-07 00:30:40 +0100pavonia(~user@user/siracusa) siracusa
2024-11-07 00:31:22 +0100 <Inst> I think you can consider IO in Haskell a very primitive / early effect system, but I don't think you can say the same for Clean's uniqueness types, which seem to be a more of linearity
2024-11-07 00:31:51 +0100 <Inst> so then you can argue that Haskell had the first effect system
2024-11-07 00:35:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 00:38:09 +0100kstatz12(~karl@user/kstatz12) kstatz12
2024-11-07 00:38:12 +0100 <int-e> 1992 CLEAN still had rules, 1994 CLEAN started to look more like Haskell.
2024-11-07 00:38:14 +0100int-eshrugs
2024-11-07 00:38:42 +0100 <int-e> Anyway, the lesson here is that languages evolve, so dates of conception can be misleading.
2024-11-07 00:38:54 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-11-07 00:39:31 +0100 <dolio> I'm curious what Miranda did, but I can't find my copy of the manual.
2024-11-07 00:39:52 +0100kstatz12(~karl@user/kstatz12) (Client Quit)
2024-11-07 00:40:33 +0100 <haskellbridge> <Bowuigi> Miranda has a sys_message ADT, main uses a list of that
2024-11-07 00:40:56 +0100 <sshine> Inst, I understand that IO came to Haskell at some later point.
2024-11-07 00:41:00 +0100 <dolio> In '85, though?
2024-11-07 00:41:13 +0100 <sshine> I was born that year!
2024-11-07 00:41:44 +0100 <dolio> I mean, that would make somse sense, because Haskell was essentially Miranda with a few tweaks.
2024-11-07 00:42:07 +0100 <int-e> sshine: so how do you feel about turning ancient next year *runs*
2024-11-07 00:42:12 +0100 <sshine> https://okmij.org/ftp/Computation/IO-monad-history.html
2024-11-07 00:42:23 +0100 <sshine> apparently I'm not as ancient as the IO monad after all
2024-11-07 00:42:24 +0100acidjnk(~acidjnk@p200300d6e7283f63c008ff7276864804.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-11-07 00:44:17 +0100 <sshine> well, it ain't 0x20 or 0x30, but it's a pretty number. :)
2024-11-07 00:47:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-07 00:51:33 +0100hueso(~root@user/hueso) (Quit: hueso)
2024-11-07 00:57:37 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-11-07 00:58:00 +0100Versality(~Versality@user/Versality) (Remote host closed the connection)
2024-11-07 00:58:14 +0100Versality(~Versality@84.237.180.62)
2024-11-07 00:58:14 +0100Versality(~Versality@84.237.180.62) (Changing host)
2024-11-07 00:58:14 +0100Versality(~Versality@user/Versality) Versality
2024-11-07 01:00:26 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 01:04:51 +0100hueso(~root@user/hueso) hueso
2024-11-07 01:05:05 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-11-07 01:06:18 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-07 01:12:02 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-11-07 01:14:10 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
2024-11-07 01:14:10 +0100ljdarj1ljdarj
2024-11-07 01:14:57 +0100supercode(~supercode@user/supercode) (Quit: Client closed)
2024-11-07 01:15:32 +0100sprotte24(~sprotte24@p200300d16f45f60044d2f8c33ad18940.dip0.t-ipconnect.de) (Quit: Leaving)
2024-11-07 01:15:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 01:20:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-11-07 01:22:12 +0100xff0x(~xff0x@2405:6580:b080:900:3e16:56e8:fa8f:748e) (Ping timeout: 276 seconds)
2024-11-07 01:23:04 +0100 <monochrom> Haha so there is opportunity for saying "Lean 88"?! :)
2024-11-07 01:27:25 +0100 <monochrom> But I disagree with Oleg in thinking of () as world state. Instead, it is more honest without sacrificing pragmatics to adopt that in "() -> Codomain" the -> is a Kleisli arrow.
2024-11-07 01:28:38 +0100TonyStone(~TonyStone@user/TonyStone) (Quit: Leaving)
2024-11-07 01:28:54 +0100TonyStone(~TonyStone@user/TonyStone) TonyStone
2024-11-07 01:31:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 01:33:10 +0100 <haskellbridge> <zwro> would we be better off without undefined and error and other bottoms? could we guarantee totality (modulo termination)?
2024-11-07 01:34:07 +0100 <geekosaur> no, because there are other ways to get bottoms any time there are external inputs
2024-11-07 01:35:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-07 01:36:06 +0100 <geekosaur> too many bottoms, thanks to whoever thought it was a brilliant idea to throw an exception (which is a bottom) on file not found etc.
2024-11-07 01:39:46 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-11-07 01:43:16 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-11-07 01:46:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 01:51:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-11-07 01:51:44 +0100troojg(~troojg@user/troojg) troojg
2024-11-07 01:56:23 +0100alexherbo2(~alexherbo@2a02-8440-341a-456e-a8d1-f94d-35c3-2d26.rev.sfr.net) (Remote host closed the connection)
2024-11-07 02:00:18 +0100 <haskellbridge> <zwro> can't those exceptions be "caught" with something like `readFile :: IO (Either Exception FileContents)` ?
2024-11-07 02:00:56 +0100 <haskellbridge> <zwro> (pseudocode)
2024-11-07 02:01:54 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2024-11-07 02:02:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 02:07:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-07 02:09:42 +0100KaitoDaumoto(~Unity3D@user/kaitodaumoto) (Remote host closed the connection)
2024-11-07 02:09:58 +0100 <haskellbridge> <zwro> maybe i want to explore liquid haskell?
2024-11-07 02:14:08 +0100jero98772(~jero98772@2800:484:1d7c:cc00::3)
2024-11-07 02:14:13 +0100jero98772(~jero98772@2800:484:1d7c:cc00::3) (Client Quit)
2024-11-07 02:15:05 +0100notzmv(~daniel@user/notzmv) notzmv
2024-11-07 02:15:09 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2024-11-07 02:16:08 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 272 seconds)
2024-11-07 02:17:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-07 02:20:06 +0100 <geekosaur> no, they're actual exceptions that must be caught in `IO` with `catch` or `handle` etc.
2024-11-07 02:21:01 +0100 <dolio> Well, you could restructure everything to return explicit failures. However, the problem is that that isn't necessarily a good idea.
2024-11-07 02:22:40 +0100 <geekosaur> as long as exceptions are a trainwreck, I can't see it being worse
2024-11-07 02:23:48 +0100 <dolio> That's very naive.
2024-11-07 02:24:54 +0100 <geekosaur> https://mail.haskell.org/pipermail/libraries/2014-September/023675.html
2024-11-07 02:25:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-07 02:25:11 +0100 <geekosaur> you're likely to leak with any exception
2024-11-07 02:25:25 +0100 <geekosaur> synchronous exceptions were a fundamental mistake