Newest at the top
| 2026-05-28 21:30:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-28 21:09:27 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-05-28 21:06:39 +0000 | bggd | (~bgg@user/bggd) bggd |
| 2026-05-28 21:06:39 +0000 | bggd | (~bgg@2a01:e0a:fd5:f510:7685:8777:7677:172c) (Changing host) |
| 2026-05-28 21:06:38 +0000 | bggd | (~bgg@2a01:e0a:fd5:f510:7685:8777:7677:172c) |
| 2026-05-28 20:59:53 +0000 | weary-traveler | (~user@user/user363627) user363627 |
| 2026-05-28 20:59:36 +0000 | merijn | (~merijn@77.242.116.146) (Ping timeout: 259 seconds) |
| 2026-05-28 20:55:04 +0000 | Square2 | (~Square@user/square) (Ping timeout: 276 seconds) |
| 2026-05-28 20:52:46 +0000 | ouilemur | (~jgmerritt@user/ouilemur) ouilemur |
| 2026-05-28 20:47:29 +0000 | shots____fired | (uid751043@id-751043.lymington.irccloud.com) |
| 2026-05-28 20:46:14 +0000 | shots____fired | (uid751043@id-751043.lymington.irccloud.com) (Excess Flood) |
| 2026-05-28 20:44:45 +0000 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-05-28 20:43:27 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds) |
| 2026-05-28 20:43:09 +0000 | shots____fired | (uid751043@id-751043.lymington.irccloud.com) |
| 2026-05-28 20:42:09 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer) |
| 2026-05-28 20:42:06 +0000 | ouilemur | (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.9.0) |
| 2026-05-28 20:39:46 +0000 | diabloblanco | (~diablobla@user/diabloblanco) (Ping timeout: 248 seconds) |
| 2026-05-28 20:39:45 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-28 20:37:07 +0000 | Square3 | (~Square4@user/square) Square |
| 2026-05-28 20:35:52 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-05-28 20:35:27 +0000 | diabloblanco | (~diablobla@user/diabloblanco) diabloblanco |
| 2026-05-28 20:31:56 +0000 | takuan | (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 266 seconds) |
| 2026-05-28 20:31:03 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-28 20:27:44 +0000 | pavonia | (~user@user/siracusa) siracusa |
| 2026-05-28 20:22:37 +0000 | <int-e> | Right. You get a fixed point combinator. You don't get sharing though. (yfix (1:) produces an infinite heap object) |
| 2026-05-28 20:21:38 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-05-28 20:13:33 +0000 | <mauke> | https://en.wikipedia.org/wiki/Fixed-point_combinator#Type_for_the_Y_combinator |
| 2026-05-28 20:12:18 +0000 | <c_wraith> | it still requires type recursion to work. The next trick is to reimplement type-level fix |
| 2026-05-28 20:12:17 +0000 | tomsmeding | . o O ( https://downloads.haskell.org/ghc/latest/docs/users_guide/bugs.html#bugs-in-ghc ) |
| 2026-05-28 20:11:41 +0000 | <tomsmeding> | oh, I've seen this before. The NOINLINE is the juicy part :) |
| 2026-05-28 20:10:36 +0000 | <Leary> | tomsmeding: https://gist.github.com/LSLeary/4c7f3ab7622d991cfa22c36efbaf0674 |
| 2026-05-28 20:09:24 +0000 | poscat0x04 | (~poscat@user/poscat) poscat |
| 2026-05-28 20:09:18 +0000 | poscat | (~poscat@user/poscat) (Read error: Connection reset by peer) |
| 2026-05-28 20:07:26 +0000 | <tomsmeding> | can you? If you don't have value recursion, how are you going to loop? |
| 2026-05-28 20:02:42 +0000 | <mauke> | can't you define 'fix' using a newtype? |
| 2026-05-28 20:02:17 +0000 | Sinbad | (~peter@0x5857e667-catv-dyn.rev.komnet.hu) |
| 2026-05-28 19:45:24 +0000 | weary-traveler | (~user@user/user363627) (Ping timeout: 244 seconds) |
| 2026-05-28 19:43:25 +0000 | <int-e> | It's still relevant semantically I guess. Explains why it doesn't matter which of the mutually recursive values you evaluate first. |
| 2026-05-28 19:42:42 +0000 | <int-e> | jaror: That bisection isn't attractive as an actual translation because it would duplicate computations. |
| 2026-05-28 19:37:05 +0000 | <jaror> | Should be just fine even with typed Core |
| 2026-05-28 19:36:14 +0000 | <jaror> | I think this is called Bekić's bisection lemma: https://en.wikipedia.org/wiki/Beki%C4%87's_theorem |
| 2026-05-28 19:35:05 +0000 | <int-e> | Yeah in practice that desugaring is more about translating mutual recusion into a single fixed point. And GHC doesn't even do that; STG has a recursive let (and at the Cmm level that recusion is built into thunks with mutual references on the heap) |
| 2026-05-28 19:33:44 +0000 | <lortabac> | probably impossible with a typed Core |
| 2026-05-28 19:27:08 +0000 | <int-e> | lortabac: This is the hard part of the question whether `fix` and `letrec` can be defined in terms of each other. |
| 2026-05-28 19:27:03 +0000 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) TimWolla |
| 2026-05-28 19:26:42 +0000 | <geekosaur> | (and IIRC `fix` is defined in terms of `let`?) |
| 2026-05-28 19:25:59 +0000 | <geekosaur> | the Haskell-level `fix` isn't, but `let` is defined as `letrec` in Haskell so must have `fix` semantics |
| 2026-05-28 19:25:45 +0000 | <lortabac> | interesting |
| 2026-05-28 19:24:46 +0000 | <int-e> | yes |
| 2026-05-28 19:24:32 +0000 | <lortabac> | int-e: "where fix is the least fixpoint operator" -> it seems to assume that fix is a primitive |