Newest at the top
| 2026-04-06 13:17:51 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 13:16:44 +0000 | <probie> | `State# RealWorld` is a special 0-bit type that's just a token (since you can't actually pass the universe around), and the `(# ..., ... #)` is an "unboxed tuple", which you can think of as a strict tuple with no runtime overhead |
| 2026-04-06 13:14:37 +0000 | <probie> | e.g. something of type `Char -> IO ()` is really `Char -> Universe -> ((), Universe)`, and the interface of the IO monad prevents you from using that `Universe` twice. In reality it's actually `Char -> State# RealWorld -> (# State# RealWorld, a #)` |
| 2026-04-06 13:11:30 +0000 | <probie> | fp`: Something of type `IO a` is modelled by GHC as function from the current state of the universe, to a pair containing the new state of the universe, and a value of type `a`. As part of generating this "new state of the universe", IO actions happen |
| 2026-04-06 13:07:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-04-06 13:06:26 +0000 | tromp | (~textual@2001:1c00:340e:2700:8cf8:7bb7:a0e:7cfa) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-04-06 13:05:30 +0000 | <fp`> | So in the sense that `putChar 'c'` is evaluated to <IO action> and that is eventually executed to produce a 'c' in the tty, who does the executing? Is this a metaphor for how GHC produces code, or is there a runtime that is literally turning IO actions into syscalls? |
| 2026-04-06 13:02:09 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 12:59:22 +0000 | oats | (~oats@user/oats) oats |
| 2026-04-06 12:59:08 +0000 | oats | (~oats@user/oats) (Read error: Connection reset by peer) |
| 2026-04-06 12:51:30 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-04-06 12:50:25 +0000 | tromp | (~textual@2001:1c00:340e:2700:8cf8:7bb7:a0e:7cfa) |
| 2026-04-06 12:48:53 +0000 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
| 2026-04-06 12:47:30 +0000 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Excess Flood) |
| 2026-04-06 12:46:20 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 12:45:42 +0000 | rainbyte | (~rainbyte@181.47.219.3) rainbyte |
| 2026-04-06 12:44:51 +0000 | rainbyte | (~rainbyte@181.47.219.3) (Read error: Connection reset by peer) |
| 2026-04-06 12:44:37 +0000 | Pixi` | Pixi |
| 2026-04-06 12:43:56 +0000 | sonny | (~sonny@bras-base-london140cw-grc-17-142-113-177-150.dsl.bell.ca) sonny |
| 2026-04-06 12:40:31 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds) |
| 2026-04-06 12:40:10 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-04-06 12:39:43 +0000 | Pozyomka | (~pyon@user/pyon) pyon |
| 2026-04-06 12:35:11 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 12:26:35 +0000 | m2 | (~travltux@user/travltux) travltux |
| 2026-04-06 12:24:28 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-04-06 12:24:01 +0000 | m | (~travltux@user/travltux) (Quit: WeeChat 4.7.2) |
| 2026-04-06 12:19:08 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 12:14:46 +0000 | Pozyomka | (~pyon@user/pyon) (Quit: brb) |
| 2026-04-06 12:13:33 +0000 | craunts795335385 | (~craunts@152.32.99.2) |
| 2026-04-06 12:10:08 +0000 | raelie | (~raelie@user/raelie) raelie |
| 2026-04-06 12:08:48 +0000 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) TimWolla |
| 2026-04-06 12:08:29 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-04-06 12:03:21 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-04-06 12:02:34 +0000 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) (Remote host closed the connection) |
| 2026-04-06 12:01:21 +0000 | craunts795335385 | (~craunts@152.32.99.2) (Quit: The Lounge - https://thelounge.chat) |
| 2026-04-06 11:57:16 +0000 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) TimWolla |
| 2026-04-06 11:52:09 +0000 | merijn | (~merijn@62.45.136.136) (Ping timeout: 248 seconds) |
| 2026-04-06 11:51:36 +0000 | <ski> | np |
| 2026-04-06 11:50:54 +0000 | <fp`> | Cool. Thank you so much for all the help! |
| 2026-04-06 11:47:12 +0000 | <ski> | fp` ^ |
| 2026-04-06 11:47:09 +0000 | <lambdabot> | https://hackage.haskell.org/package/simple-reflect |
| 2026-04-06 11:47:09 +0000 | <ski> | @hackage simple-reflect |
| 2026-04-06 11:45:32 +0000 | <ski> | so, the example above is the same as `any (> 10) [0 ..]' |
| 2026-04-06 11:45:27 +0000 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-04-06 11:45:17 +0000 | <lambdabot> | or = foldr (||) False |
| 2026-04-06 11:45:17 +0000 | <ski> | @src or |
| 2026-04-06 11:45:16 +0000 | <lambdabot> | any p = or . map p |
| 2026-04-06 11:45:16 +0000 | <ski> | @src any |
| 2026-04-06 11:45:08 +0000 | <fp`> | Also, where does lambdabot's Expr type come from? That would be quite useful to me |
| 2026-04-06 11:44:28 +0000 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) (Quit: Bye) |