Newest at the top
| 2026-04-06 19:16:10 +0000 | <int-e> | (it predates my exposure to Haskell) |
| 2026-04-06 19:15:56 +0000 | <mauke> | that sounds like Haskell 1.3 or something |
| 2026-04-06 19:15:53 +0000 | AlexNoo | (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:15:46 +0000 | <c_wraith> | yes, that predates Monad being part of the standard library |
| 2026-04-06 19:15:31 +0000 | <int-e> | Wasn't there a [Reply] -> [Request] model at some point |
| 2026-04-06 19:15:30 +0000 | <monochrom> | Right, good for about 0th approximation only. |
| 2026-04-06 19:15:15 +0000 | <mauke> | why did 10 lines of activity just pop up at once? how laggy is this connection? :-) |
| 2026-04-06 19:14:58 +0000 | AlexNoo | (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:14:54 +0000 | <monochrom> | ISTR Hugs old versions did it the free-monad way! But I can't find it now. |
| 2026-04-06 19:14:39 +0000 | <c_wraith> | the model doesn't work for concurrent code, though. So... uh... |
| 2026-04-06 19:14:36 +0000 | <int-e> | And monochrom is cruel anough to tell them that RealWorld is entirely imaginary. |
| 2026-04-06 19:14:03 +0000 | <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:00 +0000 | <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:13:35 +0000 | <c_wraith> | (though they can be part of an unboxed tuple of return values) |
| 2026-04-06 19:13:34 +0000 | <mauke> | RealWorld is an irrelevant implementation detail of one particular Haskell implementation |
| 2026-04-06 19:13:21 +0000 | <int-e> | Now, here's the real question: Did Rust steal zero-sized types from Haskell ;-) |
| 2026-04-06 19:13:18 +0000 | <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:05 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-04-06 19:12:54 +0000 | AlexNoo__ | (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:12:20 +0000 | <c_wraith> | GHC supports values that exist in code, but not at run time. |
| 2026-04-06 19:12:10 +0000 | AlexNoo_ | (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:12:09 +0000 | <int-e> | "exist" in the sense that they're stored in memory or a register |
| 2026-04-06 19:12:01 +0000 | <c_wraith> | making GHC allow users to create zero-size values is actually a relatively new thing. |
| 2026-04-06 19:12:00 +0000 | <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:00 +0000 | <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:11:46 +0000 | AlexNoo__ | (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:11:35 +0000 | <int-e> | this particular one doesn't |
| 2026-04-06 19:11:32 +0000 | <tomsmeding> | sure, but there's not even a _vlaue_ of type RealWorld |
| 2026-04-06 19:11:31 +0000 | <int-e> | most of them |
| 2026-04-06 19:11:28 +0000 | <int-e> | raincomplex: but values exist |
| 2026-04-06 19:11:15 +0000 | <raincomplex> | isn't it true that most of the type system doesn't exist in the final code? |
| 2026-04-06 19:11:14 +0000 | AlexNoo_ | (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:10:54 +0000 | <tomsmeding> | I guess |
| 2026-04-06 19:10:48 +0000 | <int-e> | because in a way it does exist, it just has no material manifestation whatsoever |
| 2026-04-06 19:10:43 +0000 | <tomsmeding> | OK I can get behind that |
| 2026-04-06 19:10:33 +0000 | AlexNoo | (~AlexNoo@85.174.183.185) |
| 2026-04-06 19:10:28 +0000 | <monochrom> | Right, I am saying that looking at the assembly code is the beginning of realizing that something special, not shown in source code, is going on. |
| 2026-04-06 19:10:18 +0000 | <int-e> | " |
| 2026-04-06 19:10:17 +0000 | <int-e> | tomsmeding: well. I guess I shouldn't say "no |
| 2026-04-06 19:10:10 +0000 | AlexNoo | (~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds) |
| 2026-04-06 19:09:02 +0000 | <tomsmeding> | sure |
| 2026-04-06 19:08:56 +0000 | <int-e> | tomsmeding: no, but the function is different from its result value |
| 2026-04-06 19:08:50 +0000 | <c_wraith> | int-e: yes. What's going on is that at level procedures exist. :) |
| 2026-04-06 19:08:44 +0000 | Googulator10 | Googulator |
| 2026-04-06 19:08:41 +0000 | <tomsmeding> | int-e: if the argument is zero-size, does it exist? |
| 2026-04-06 19:08:12 +0000 | <tomsmeding> | it would be rather stupid! |
| 2026-04-06 19:08:12 +0000 | <int-e> | well *something* is still going on because the RTS knows how to apply a function to a void (zero-size) argument |
| 2026-04-06 19:08:07 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 19:07:59 +0000 | <c_wraith> | people believe RealWorld exists in the final code? huh. I had no idea. |
| 2026-04-06 19:07:34 +0000 | AlexNoo__ | (~AlexNoo@85.174.183.185) |