2024-11-07 00:00:01 +0100 | wryishly | (~wryish@216.246.119.62) (Ping timeout: 248 seconds) |
2024-11-07 00:00:04 +0100 | rune_ | (sid21167@id-21167.ilkley.irccloud.com) (Ping timeout: 260 seconds) |
2024-11-07 00:00:04 +0100 | snek | (sid280155@id-280155.lymington.irccloud.com) (Ping timeout: 260 seconds) |
2024-11-07 00:00:27 +0100 | jjhoo | (~jahakala@user/jjhoo) jjhoo |
2024-11-07 00:00:29 +0100 | Miroboru | (~myrvoll@178-164-114.82.3p.ntebredband.no) Miroboru |
2024-11-07 00:00:29 +0100 | hacklschorsch | (~flo@2a01:4f9:3a:2296::2) |
2024-11-07 00:00:45 +0100 | s4msung | (~s4msung@user/s4msung) s4msung |
2024-11-07 00:00:51 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) NiKaN |
2024-11-07 00:00:54 +0100 | snek | (sid280155@id-280155.lymington.irccloud.com) snek |
2024-11-07 00:00:55 +0100 | rune_ | (sid21167@id-21167.ilkley.irccloud.com) |
2024-11-07 00:01:11 +0100 | Techcable | (sid534393@user/Techcable) Techcable |
2024-11-07 00:01:11 +0100 | tritlo | (sid58727@id-58727.hampstead.irccloud.com) |
2024-11-07 00:01:24 +0100 | aristid | (sid1599@id-1599.uxbridge.irccloud.com) |
2024-11-07 00:01:49 +0100 | thaumavorio | (~thaumavor@thaumavor.io) thaumavorio |
2024-11-07 00:01:54 +0100 | notzmv | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 00:04:41 +0100 | Square2 | (~Square4@user/square) Square |
2024-11-07 00:04:51 +0100 | alexherbo2 | (~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 +0100 | Square | (~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 +0100 | Square2 | Square |
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 +0100 | merijn | (~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 +0100 | unlucy | (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 +0100 | merijn | (~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 +0100 | visilii | (~visilii@85.172.77.90) (Quit: ZNC - https://znc.in) |
2024-11-07 00:23:34 +0100 | visilii | (~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 +0100 | merijn | (~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 +0100 | peterbecich | (~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 +0100 | L29Ah | (~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 +0100 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
2024-11-07 00:26:52 +0100 | CrunchyFlakes | (~CrunchyFl@31.19.233.78) |
2024-11-07 00:27:18 +0100 | Everything | (~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 +0100 | visilii | (~visilii@85.172.77.90) (Client Quit) |
2024-11-07 00:28:36 +0100 | visilii | (~visilii@85.172.77.90) |
2024-11-07 00:30:40 +0100 | pavonia | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 00:38:09 +0100 | kstatz12 | (~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 +0100 | int-e | shrugs |
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 +0100 | SlackCoder | (~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 +0100 | kstatz12 | (~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 +0100 | acidjnk | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-07 00:51:33 +0100 | hueso | (~root@user/hueso) (Quit: hueso) |
2024-11-07 00:57:37 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2024-11-07 00:58:00 +0100 | Versality | (~Versality@user/Versality) (Remote host closed the connection) |
2024-11-07 00:58:14 +0100 | Versality | (~Versality@84.237.180.62) |
2024-11-07 00:58:14 +0100 | Versality | (~Versality@84.237.180.62) (Changing host) |
2024-11-07 00:58:14 +0100 | Versality | (~Versality@user/Versality) Versality |
2024-11-07 01:00:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 01:04:51 +0100 | hueso | (~root@user/hueso) hueso |
2024-11-07 01:05:05 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-07 01:06:18 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-07 01:12:02 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2024-11-07 01:14:10 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds) |
2024-11-07 01:14:10 +0100 | ljdarj1 | ljdarj |
2024-11-07 01:14:57 +0100 | supercode | (~supercode@user/supercode) (Quit: Client closed) |
2024-11-07 01:15:32 +0100 | sprotte24 | (~sprotte24@p200300d16f45f60044d2f8c33ad18940.dip0.t-ipconnect.de) (Quit: Leaving) |
2024-11-07 01:15:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 01:20:23 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-11-07 01:22:12 +0100 | xff0x | (~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 +0100 | TonyStone | (~TonyStone@user/TonyStone) (Quit: Leaving) |
2024-11-07 01:28:54 +0100 | TonyStone | (~TonyStone@user/TonyStone) TonyStone |
2024-11-07 01:31:11 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2024-11-07 01:43:16 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-11-07 01:46:34 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 01:51:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-07 01:51:44 +0100 | troojg | (~troojg@user/troojg) troojg |
2024-11-07 01:56:23 +0100 | alexherbo2 | (~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 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2024-11-07 02:02:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 02:07:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-07 02:09:42 +0100 | KaitoDaumoto | (~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 +0100 | jero98772 | (~jero98772@2800:484:1d7c:cc00::3) |
2024-11-07 02:14:13 +0100 | jero98772 | (~jero98772@2800:484:1d7c:cc00::3) (Client Quit) |
2024-11-07 02:15:05 +0100 | notzmv | (~daniel@user/notzmv) notzmv |
2024-11-07 02:15:09 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2024-11-07 02:16:08 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 272 seconds) |
2024-11-07 02:17:47 +0100 | merijn | (~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 +0100 | merijn | (~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 |
2024-11-07 02:26:35 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Quit: Client closed) |
2024-11-07 02:29:41 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2024-11-07 02:29:46 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2024-11-07 02:35:50 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 02:38:52 +0100 | <dolio> | If you mean asynchronous exceptions, then you are unnecessarily conflating that with other aspects of the exception API. |
2024-11-07 02:39:52 +0100 | <dolio> | E.G. if you don't want to locally handle an explicit `Either` result, then you need to use a monad transformer or something. |
2024-11-07 02:40:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-07 02:42:02 +0100 | <dolio> | Which is possible, but then you probably have a lot of lifting and lowering to do. And also, the transformer will probably have abysmal performance characteristics, because it will repeatedly be building and inspecting Either values for the expected common case of not having an exception. |
2024-11-07 02:46:40 +0100 | <dolio> | For scenarios where exceptions are actually exceptional, you want an alternate implementation, like continuations for algebraic effects, so that you just install a handler once and you only jump out to it when there actually is an exception. It's technically the same 'type,' but one implementation is far superior for how it will likely be used. |
2024-11-07 02:49:39 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2024-11-07 02:49:58 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-07 02:51:12 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 02:54:18 +0100 | <Leary> | We could (and imo should) have unchecked panics (anywhere) and statically checked exceptions (IO/ST only) with `IO/ST :: [Exception] -> Type -> Type` uniting exception sets in `<*>`/`>>=` while `try`/`catch` delete one and `main :: IO [] (); runST :: (forall s. ST [] a) -> a`. Interruptible operations would necessarily include async exceptions in the type-level list of exceptions they might throw. The actual implementation would be essentially unchanged |
2024-11-07 02:54:18 +0100 | <Leary> | , the interface would just be more strongly typed. |
2024-11-07 02:55:39 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-07 03:02:03 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 256 seconds) |
2024-11-07 03:02:30 +0100 | califax_ | (~califax@user/califx) califx |
2024-11-07 03:03:01 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-11-07 03:03:14 +0100 | TonyStone | (~TonyStone@user/TonyStone) (Ping timeout: 260 seconds) |
2024-11-07 03:03:36 +0100 | califax | (~califax@user/califx) (Ping timeout: 260 seconds) |
2024-11-07 03:03:36 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds) |
2024-11-07 03:03:50 +0100 | califax_ | califax |
2024-11-07 03:05:11 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) chiselfuse |
2024-11-07 03:05:27 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-11-07 03:06:36 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 03:10:48 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-11-07 03:12:01 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds) |
2024-11-07 03:14:40 +0100 | spew | (~spew@201.141.99.170) (Quit: spew) |
2024-11-07 03:18:08 +0100 | TonyStone | (~TonyStone@user/TonyStone) TonyStone |
2024-11-07 03:21:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 03:23:46 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2024-11-07 03:26:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-07 03:32:31 +0100 | ryanbooker | (uid4340@id-4340.hampstead.irccloud.com) ryanbooker |
2024-11-07 03:35:29 +0100 | troojg | (~troojg@user/troojg) (Ping timeout: 248 seconds) |
2024-11-07 03:37:20 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 03:39:26 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2024-11-07 03:42:19 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-07 03:48:50 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2024-11-07 03:54:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 04:01:06 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-07 04:10:48 +0100 | weary-traveler | (~user@user/user363627) (Ping timeout: 245 seconds) |
2024-11-07 04:12:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 04:12:45 +0100 | blover | (~arthur@2804:7f0:6780:f864:2d9e:2c7d:cab0:69d2) blover |
2024-11-07 04:13:50 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2024-11-07 04:17:05 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-07 04:20:03 +0100 | blover | (~arthur@2804:7f0:6780:f864:2d9e:2c7d:cab0:69d2) (Remote host closed the connection) |
2024-11-07 04:20:38 +0100 | blover | (~blover@2804:7f0:6780:f864:2d9e:2c7d:cab0:69d2) blover |
2024-11-07 04:27:51 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 04:32:32 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-11-07 04:33:29 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) (Ping timeout: 260 seconds) |
2024-11-07 04:40:10 +0100 | <Axman6> | I wrote something to do that years ago, which used indexed monads to list the possible expections, and handlers would remove them from the list |
2024-11-07 04:40:52 +0100 | blover | (~blover@2804:7f0:6780:f864:2d9e:2c7d:cab0:69d2) (*.net *.split) |
2024-11-07 04:40:52 +0100 | gmg | (~user@user/gehmehgeh) (*.net *.split) |
2024-11-07 04:40:52 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) (*.net *.split) |
2024-11-07 04:40:52 +0100 | califax | (~califax@user/califx) (*.net *.split) |
2024-11-07 04:40:52 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (*.net *.split) |
2024-11-07 04:40:52 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (*.net *.split) |
2024-11-07 04:40:52 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (*.net *.split) |
2024-11-07 04:42:59 +0100 | <Axman6> | https://gist.github.com/axman6/19adc08a809d919a2efb |
2024-11-07 04:43:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 04:43:25 +0100 | <Axman6> | (From back in the day when we didn't have most of those type level functions on lists defined for us) |
2024-11-07 04:46:33 +0100 | califax | (~califax@user/califx) califx |
2024-11-07 04:46:34 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) stiell |
2024-11-07 04:46:36 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
2024-11-07 04:47:39 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-07 04:50:15 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) TimWolla |
2024-11-07 04:50:50 +0100 | Inst_ | (~Inst@user/Inst) Inst |
2024-11-07 04:50:51 +0100 | td_ | (~td@i53870906.versanet.de) (Ping timeout: 276 seconds) |
2024-11-07 04:51:02 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) chiselfuse |
2024-11-07 04:51:19 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2024-11-07 04:52:23 +0100 | td_ | (~td@i5387092D.versanet.de) |
2024-11-07 04:53:21 +0100 | Inst | (~Inst@user/Inst) (Ping timeout: 248 seconds) |
2024-11-07 04:54:23 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-11-07 05:01:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 05:05:52 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-07 05:11:24 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-07 05:12:16 +0100 | <Leary> | Axman6: The Atkey parameterised monad isn't ideal for this; you want a graded(?) monad: `class Graded (m :: k -> Type -> Type) where { type E m :: k; type Ap m (g1 :: k) (g2 :: k) :: k; pure :: a -> m (E m) a; (>>=) :: m g1 a -> (a -> m g2 b) -> m (Ap m g1 g2) b }`, with the obvious monoidal properties at both levels. |
2024-11-07 05:16:36 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 05:17:46 +0100 | <Axman6> | Not sure I follow how that works, I thik I'd need to see the instances |
2024-11-07 05:21:06 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-07 05:31:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 05:37:49 +0100 | Inst_ | (~Inst@user/Inst) (Ping timeout: 260 seconds) |
2024-11-07 05:38:00 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-07 05:38:43 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-11-07 05:42:19 +0100 | <jackdk> | Does anyone have a favourite rank2classes-style library that provides a class for HKD representables? I'm specifically looking for a class to associate a record with a GADT namings its fields (like a total DMap) and a FRepresentable sounds like it would fit the bill. I don't need a rank-2 tabulate, if that makes the search easier. The FIndexable in Ed's distributive library looks right but never made it from GitHub to Hackage. |
2024-11-07 05:45:38 +0100 | aforemny_ | (~aforemny@i59F4C67C.versanet.de) aforemny |
2024-11-07 05:46:34 +0100 | aforemny | (~aforemny@i577B13E8.versanet.de) (Ping timeout: 260 seconds) |
2024-11-07 05:50:02 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 05:55:46 +0100 | Square | (~Square4@user/square) (Ping timeout: 252 seconds) |
2024-11-07 05:58:31 +0100 | <Leary> | Axman6: https://gist.github.com/LSLeary/4484fb6bc4d96e59092d48592c162b9f |
2024-11-07 06:00:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-07 06:07:57 +0100 | famubu | (~famubu@user/famubu) famubu |
2024-11-07 06:09:26 +0100 | <famubu> | Hi. I was trying to do the example shown in the FRACTRAN wikipedia article: https://en.wikipedia.org/wiki/FRACTRAN |
2024-11-07 06:09:36 +0100 | <famubu> | This is what I did: https://bpa.st/2FVCW |
2024-11-07 06:09:51 +0100 | <famubu> | It gets the first few numbers right, but then goes wrong. |
2024-11-07 06:09:57 +0100 | <famubu> | Any idea how to fix it? |
2024-11-07 06:10:08 +0100 | <famubu> | This is my first time using Data.Ratio |
2024-11-07 06:10:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 06:11:37 +0100 | <famubu> | Could be the `isInt` function? |
2024-11-07 06:11:51 +0100 | <monochrom> | Is it actually safe to use Int and Ratio Int for this? Will you get integers too big for Int? |
2024-11-07 06:13:15 +0100 | <famubu> | I was doing it under the assumption that it won't go beyond Int. Maybe I should change it? |
2024-11-07 06:14:05 +0100 | <famubu> | Doing Int instead of Integer made it necessary to convert between Int and Integer too. |
2024-11-07 06:14:26 +0100 | <Leary> | Axman6: (refresh to see improvements, if you already opened that link) |
2024-11-07 06:15:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-11-07 06:18:41 +0100 | <famubu> | Made a version using Integer instead of Int: https://bpa.st/WT4TU |
2024-11-07 06:18:51 +0100 | <famubu> | Result is still incorrect though.. |
2024-11-07 06:19:09 +0100 | <famubu> | It's giving [2,15,825,725,1925,2275,425,25 |
2024-11-07 06:19:23 +0100 | <famubu> | should've been [2,15,825,725,1925,2275,425,390, |
2024-11-07 06:25:55 +0100 | <probie> | Why are you roundtripping via `Float`? Surely `isInt` could be more easily defined as `isInt x = denominator x == 1`. With that (and removing `fromRational`) I get correct answers with your code |
2024-11-07 06:26:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-07 06:28:29 +0100 | <EvanR> | was just musing with this bog standard python code for 36028797018963968 `div` 5... which is apparently int(36028797018963968 / 5), which round trips through float and gets the wrong answer xD |
2024-11-07 06:29:02 +0100 | <EvanR> | there is a // operator for integer division but it is doing the equivalent of `quot` instead of div |
2024-11-07 06:29:45 +0100 | <EvanR> | floats... so alluring... so deadly |
2024-11-07 06:30:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-07 06:32:17 +0100 | <famubu> | probie: Oh yeah.. Thanks! |
2024-11-07 06:32:23 +0100 | <famubu> | Modified it to https://bpa.st/HQC4O |
2024-11-07 06:32:26 +0100 | <famubu> | It works. |
2024-11-07 06:34:06 +0100 | <famubu> | The `foo` function feels a bit messy. Any suggestions to make it better? More readable? |
2024-11-07 06:39:09 +0100 | <Axman6> | Leary: nice, definitely simpler than the index monad version |