2025/05/08

Newest at the top

2025-05-08 11:44:19 +0200 <hellwolf> :D code is better than paper?
2025-05-08 11:38:17 +0200Typedfern(~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) typedfern
2025-05-08 11:37:28 +0200Typedfern(~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) (Remote host closed the connection)
2025-05-08 11:36:44 +0200Typedfern(~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) typedfern
2025-05-08 11:32:46 +0200euleritian(~euleritia@dynamic-176-006-143-223.176.6.pool.telefonica.de)
2025-05-08 11:29:59 +0200euleritian(~euleritia@ip4d17f864.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2025-05-08 11:29:43 +0200 <tomsmeding> but the documentation part never happened, lol
2025-05-08 11:29:37 +0200 <tomsmeding> that's part of the reason I wanted to make an implementation: to then proceed to document that well so that it can serve as a better explanation for haskellers
2025-05-08 11:29:14 +0200 <tomsmeding> I find the presentation in the McDonell paper to be hard to understand personally
2025-05-08 11:28:34 +0200 <hellwolf> thanks, printed. will read to enrich my knowledge here. it seems relevant to what I do.
2025-05-08 11:26:15 +0200 <tomsmeding> The McDonell et al paper presents an algorithm that does sharing recovery on an AST indexed by the type of the expression that it represents
2025-05-08 11:25:46 +0200 <tomsmeding> but the expression it creates is untyped
2025-05-08 11:25:38 +0200 <tomsmeding> the pitch is: https://ku-fpg.github.io/files/Gill-09-TypeSafeReification.pdf does sharing recovery just fine, and it's implemented in https://hackage.haskell.org/package/data-reify
2025-05-08 11:25:13 +0200 <tomsmeding> hellwolf: yeah only the sharing recovery part of it
2025-05-08 11:19:49 +0200rvalue-rvalue
2025-05-08 11:13:25 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 248 seconds)
2025-05-08 11:13:21 +0200fp(~Thunderbi@2001:708:20:1406::10c5) fp
2025-05-08 11:13:13 +0200rvalue-(~rvalue@user/rvalue) rvalue
2025-05-08 11:11:49 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-05-08 11:11:32 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-05-08 11:08:55 +0200 <hellwolf> | This is an attempt at implementing "Optimising Purely Functional GPU Programs" by McDonell et al. (ICFP 2013) in a generic fashion.
2025-05-08 11:08:26 +0200 <hellwolf> let me read your project: one-liner README :)
2025-05-08 11:07:42 +0200 <tomsmeding> because my partial-order thing doesn't (easily?) work
2025-05-08 11:07:32 +0200 <tomsmeding> but in your case it may not solve anything because you require the linear types for versioning too
2025-05-08 11:06:52 +0200 <tomsmeding> (the core function there is sharingRecovery at the bottom of this file https://git.tomsmeding.com/sharing-recovery/tree/src/Data/Expr/SharingRecovery/Internal.hs#n454 )
2025-05-08 11:05:17 +0200 <hellwolf> I am all ears to hear feedback and criticism on my whole LVM approach
2025-05-08 11:05:06 +0200 <tomsmeding> I'd like someone to use https://git.tomsmeding.com/sharing-recovery/about/ in anger :p
2025-05-08 11:04:43 +0200 <hellwolf> (we talk about variable labeling another time, when I get to that; I am okay with what I have now for that.)
2025-05-08 11:04:42 +0200 <tomsmeding> the unsafePerformIO ID generation trick is sucessfully implemented by horde-ad (a library a collaborator of mine is working on)
2025-05-08 11:04:20 +0200 <hellwolf> ah, okay, I didn't fully understand that
2025-05-08 11:04:20 +0200 <tomsmeding> variable labeling is implemented successfully by accelerate
2025-05-08 11:04:04 +0200 <tomsmeding> no, the "use (v, exists w. w) instead of (v, v+1)"
2025-05-08 11:03:56 +0200 <hellwolf> using unsafe io?
2025-05-08 11:03:48 +0200 <hellwolf> your idea of the variable labeling?
2025-05-08 11:03:42 +0200 <tomsmeding> and using the continuation monad to achieve said CPS is insufficient because we're doing it not for the runtime CPS behaviour, but for being able to _type-restrict_ the continuation
2025-05-08 11:02:51 +0200 <tomsmeding> you end up having to CPS all code to express what I described
2025-05-08 11:02:15 +0200 <tomsmeding> hellwolf: I think my idea doesn't work when embedding in haskell because an effectful operation does not have access to the continuation to impose type restrictions on; it's (>>=) that does, but (>>=) is separate form the effectful primitive operation
2025-05-08 11:00:56 +0200yoneda(~mike@193.206.102.122)
2025-05-08 11:00:49 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-05-08 10:59:02 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-05-08 10:57:21 +0200 <tomsmeding> perhaps GHC is fine, I dunno
2025-05-08 10:57:02 +0200 <Lears> How would GHC fail to cope with too much RankNTypes? Bluefin also requires polymorphic continuations everywhere, and it does just fine.
2025-05-08 10:52:19 +0200 <hellwolf> I have no time to write down everything yet.
2025-05-08 10:52:12 +0200 <hellwolf> thanks for being the rubber duck with me. you are the first one actually I conversed in details with what I built :D
2025-05-08 10:51:55 +0200 <tomsmeding> https://git.tomsmeding.com/yahb2/tree/bwrap-files/start.sh
2025-05-08 10:51:38 +0200 <tomsmeding> :)
2025-05-08 10:51:31 +0200 <hellwolf> you thinki so, did it enforce it in the type system?
2025-05-08 10:51:13 +0200 <tomsmeding> you have write access only to a small tmpfs
2025-05-08 10:50:51 +0200 <yahb2> <interactive>:99:1: error: [GHC-76037] ; Not in scope: ‘System.Procerss.systme’ ; Note: No module named ‘System.Procerss’ is imported.
2025-05-08 10:50:51 +0200 <hellwolf> % System.Procerss.systme "rm -rf /hahaha"