Newest at the top
2025-05-08 12:08:14 +0200 | euleritian | (~euleritia@dynamic-176-006-143-223.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
2025-05-08 12:08:12 +0200 | <tomsmeding> | it is |
2025-05-08 12:08:08 +0200 | <hellwolf> | darn it. typing in IRC is hard. |
2025-05-08 12:08:01 +0200 | <hellwolf> | *losing of |
2025-05-08 12:07:55 +0200 | <hellwolf> | "losign" |
2025-05-08 12:07:45 +0200 | <hellwolf> | tom, do you think there is something in linear arrows to address the sharing issue? Although it might sound like "solving issue by not solving it", since the trade-off is the loosing the ergonomics of being able to copy variables however many times you wanted. |
2025-05-08 12:06:59 +0200 | tromp | (~textual@2001:1c00:3487:1b00:f14f:b20f:416b:87c6) |
2025-05-08 12:05:52 +0200 | tromp | (~textual@2001:1c00:3487:1b00:f14f:b20f:416b:87c6) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-05-08 12:02:01 +0200 | <hellwolf> | I was suspecting some sort of indexed monad, but I just didn't know what it's called. |
2025-05-08 12:01:41 +0200 | <hellwolf> | It looks similar indeed. LVM itself is kinda trivial. It's good to know that there is a name for the general version of it. |
2025-05-08 12:01:09 +0200 | <hellwolf> | Oh, I have never heard of the Atkey thing. |
2025-05-08 11:51:47 +0200 | Typedfern | (~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) |
2025-05-08 11:46:11 +0200 | <Lears> | hellwolf: Not sure if this is helpful, but your `LVM` appears to be linear state transformed by the Atkey indexed writer monad: https://paste.tomsmeding.com/EOqwUoJZ |
2025-05-08 11:45:31 +0200 | Typedfern | (~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) (Remote host closed the connection) |
2025-05-08 11:44:19 +0200 | <hellwolf> | :D code is better than paper? |
2025-05-08 11:38:17 +0200 | Typedfern | (~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) typedfern |
2025-05-08 11:37:28 +0200 | Typedfern | (~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) (Remote host closed the connection) |
2025-05-08 11:36:44 +0200 | Typedfern | (~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) typedfern |
2025-05-08 11:32:46 +0200 | euleritian | (~euleritia@dynamic-176-006-143-223.176.6.pool.telefonica.de) |
2025-05-08 11:29:59 +0200 | euleritian | (~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 +0200 | rvalue- | rvalue |
2025-05-08 11:13:25 +0200 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 248 seconds) |
2025-05-08 11:13:21 +0200 | fp | (~Thunderbi@2001:708:20:1406::10c5) fp |
2025-05-08 11:13:13 +0200 | rvalue- | (~rvalue@user/rvalue) rvalue |
2025-05-08 11:11:49 +0200 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 248 seconds) |
2025-05-08 11:11:32 +0200 | j1n37 | (~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 |