2026/04/06

Newest at the top

2026-04-06 19:18:14 +0000AlexNoo__(~AlexNoo@85.174.183.185)
2026-04-06 19:17:42 +0000 <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:17:30 +0000AlexNoo_(~AlexNoo@85.174.183.185)
2026-04-06 19:17:18 +0000m_a_r_k(~m_a_r_k@archlinux/support/mark) m_a_r_k
2026-04-06 19:17:06 +0000AlexNoo__(~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds)
2026-04-06 19:17:05 +0000puke(~puke@user/puke) (Quit: puke)
2026-04-06 19:16:34 +0000AlexNoo_(~AlexNoo@85.174.183.185) (Ping timeout: 248 seconds)
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 +0000AlexNoo(~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 +0000AlexNoo(~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 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-04-06 19:12:54 +0000AlexNoo__(~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 +0000AlexNoo_(~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 +0000AlexNoo__(~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 +0000AlexNoo_(~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 +0000AlexNoo(~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 +0000AlexNoo(~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. :)