Logs: liberachat/#haskell
| 2026-04-06 19:11:32 | <tomsmeding> | sure, but there's not even a _vlaue_ of type RealWorld |
| 2026-04-06 19:11:35 | <int-e> | this particular one doesn't |
| 2026-04-06 19:11:46 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:12:00 | <tomsmeding> | (not to be confused with types that can have no values in the first place, i.e. types with kind different from Type) |
| 2026-04-06 19:12:00 | <monochrom> | Yes. But I am addressing what people choose to believe, and how to change their minds; not what is already true. |
| 2026-04-06 19:12:01 | <c_wraith> | making GHC allow users to create zero-size values is actually a relatively new thing. |
| 2026-04-06 19:12:09 | <int-e> | "exist" in the sense that they're stored in memory or a register |
| 2026-04-06 19:12:10 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:12:20 | <c_wraith> | GHC supports values that exist in code, but not at run time. |
| 2026-04-06 19:12:54 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:13:05 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-04-06 19:13:18 | <c_wraith> | they have some obvious restrictions as the result of this - they can't be the sole return value of a function, for instance. |
| 2026-04-06 19:13:21 | <int-e> | Now, here's the real question: Did Rust steal zero-sized types from Haskell ;-) |
| 2026-04-06 19:13:34 | <mauke> | RealWorld is an irrelevant implementation detail of one particular Haskell implementation |
| 2026-04-06 19:13:35 | <c_wraith> | (though they can be part of an unboxed tuple of return values) |
| 2026-04-06 19:14:00 | <mauke> | it's like someone asking how I/O works in C and the first thing people point to is the struct layout of FILE in the glibc implementation of <stdio.h> |
| 2026-04-06 19:14:03 | <monochrom> | "RealWorld -> (a, RealWorld)" is a very comfortable model, so comfortable that people try everything to rationalize that it really happens in the real world. (Pun intended!) |
| 2026-04-06 19:14:36 | <int-e> | And monochrom is cruel anough to tell them that RealWorld is entirely imaginary. |
| 2026-04-06 19:14:39 | <c_wraith> | the model doesn't work for concurrent code, though. So... uh... |
| 2026-04-06 19:14:54 | <monochrom> | ISTR Hugs old versions did it the free-monad way! But I can't find it now. |
| 2026-04-06 19:14:58 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:15:15 | <mauke> | why did 10 lines of activity just pop up at once? how laggy is this connection? :-) |
| 2026-04-06 19:15:30 | <monochrom> | Right, good for about 0th approximation only. |
| 2026-04-06 19:15:31 | <int-e> | Wasn't there a [Reply] -> [Request] model at some point |
| 2026-04-06 19:15:46 | <c_wraith> | yes, that predates Monad being part of the standard library |
| 2026-04-06 19:15:53 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:15:56 | <mauke> | that sounds like Haskell 1.3 or something |
| 2026-04-06 19:16:10 | <int-e> | (it predates my exposure to Haskell) |
| 2026-04-06 19:16:34 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:17:05 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 2026-04-06 19:17:06 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:17:18 | → | m_a_r_k joins (~m_a_r_k@archlinux/support/mark) |
| 2026-04-06 19:17:30 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:17:42 | <monochrom> | Generally, people want comfort-zone models, not models that actually works. (Just look at most analogies for Monad way back then.) |
| 2026-04-06 19:18:14 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:19:29 | <monochrom> | Yeah very old Haskell did [Reply] -> [Request]. And provided a CPS wrapper. |
| 2026-04-06 19:20:18 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:21:00 | <monochrom> | Strictly (pun! you'll see) speaking, [Reply] -> [Request] plus a very strong laziness assumption because clearly you should not force a reply before you emit a request... |
| 2026-04-06 19:21:13 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:21:41 | <int-e> | eh a little nontermination never killed anybody |
| 2026-04-06 19:21:46 | <int-e> | (quite the opposite) |
| 2026-04-06 19:21:54 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:22:00 | <monochrom> | (The CPS wrapper is then less error-prone in that regard.) |
| 2026-04-06 19:22:26 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:22:38 | <monochrom> | (I might say that, then, from CPS to monad is a fairly natural next step.) |
| 2026-04-06 19:22:39 | × | preflex quits (~preflex@user/mauke/bot/preflex) (Remote host closed the connection) |
| 2026-04-06 19:22:50 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:22:53 | <int-e> | (please nobody bring up the Therac-25... oops) |
| 2026-04-06 19:23:12 | <monochrom> | :( |
| 2026-04-06 19:23:16 | → | preflex joins (~preflex@user/mauke/bot/preflex) |
| 2026-04-06 19:23:34 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:23:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-04-06 19:25:38 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:26:33 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:27:14 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:27:46 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:27:51 | <monochrom> | https://www.haskell.org/definition/from12to13.html So probably 1.2 was [Reply] -> [Request], 1.3 began the IO Monad. |
| 2026-04-06 19:28:10 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:28:50 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 2026-04-06 19:28:58 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:29:06 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-04-06 19:30:58 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:31:53 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:32:34 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:33:30 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:33:38 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:33:45 | <monochrom> | Wait, 1.4 had "List comprehensions have been generalized to arbitrary monads"? And 98 took it away?! |
| 2026-04-06 19:33:54 | <monochrom> | :'( |
| 2026-04-06 19:33:58 | <geekosaur> | yep |
| 2026-04-06 19:34:14 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:34:17 | <geekosaur> | and then ghc gave it back as an extension |
| 2026-04-06 19:34:28 | monochrom | proposes MonadComprehension for GHC2037 |
| 2026-04-06 19:36:18 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:37:13 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:37:54 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:38:06 | × | jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 255 seconds) |
| 2026-04-06 19:38:26 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:38:50 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:39:34 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:40:00 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-04-06 19:40:28 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 2026-04-06 19:41:09 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 2026-04-06 19:41:38 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:42:33 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:43:14 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:43:46 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:44:10 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:44:58 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:45:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-04-06 19:46:58 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:47:53 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:48:34 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:48:46 | × | jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 276 seconds) |
| 2026-04-06 19:48:57 | → | AlexNoo_ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:49:38 | × | AlexNoo__ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:50:34 | → | AlexNoo__ joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:52:05 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-04-06 19:52:18 | × | AlexNoo quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:53:13 | → | AlexNoo joins (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:53:22 | × | AlexNoo_ quits (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
All times are in UTC.