Newest at the top
2025-05-08 00:30:24 +0200 | tromp | (~textual@2001:1c00:3487:1b00:d43:3b62:1503:cb84) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-05-08 00:24:02 +0200 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
2025-05-08 00:23:55 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-05-08 00:22:27 +0200 | xff0x | (~xff0x@2405:6580:b080:900:c380:f27a:d8a3:29c7) (Ping timeout: 252 seconds) |
2025-05-08 00:20:13 +0200 | hellwolf | duck. good night. |
2025-05-08 00:19:08 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-05-08 00:14:52 +0200 | <hellwolf> | I still care about ergonomics, so I will be still judicious about it. |
2025-05-08 00:14:41 +0200 | <hellwolf> | but that might involve too much template haskell dotted everywhere |
2025-05-08 00:14:25 +0200 | <hellwolf> | I don't use that for all diagrams, but your suggestion of making labeling part of the GADT type is a good one, I think I will use that eventually. |
2025-05-08 00:13:44 +0200 | <hellwolf> | here: https://github.com/yolc-dev/yul-dsl-monorepo/blob/2b39ca47cb55324cab4eda36c0546ea1fb3d7aca/hs-pkgs… |
2025-05-08 00:13:39 +0200 | <hellwolf> | based on module name and src loc |
2025-05-08 00:13:29 +0200 | <hellwolf> | I have used template haskell to generate unique id |
2025-05-08 00:13:16 +0200 | <hellwolf> | to solves the ergonomics of not having to manually label |
2025-05-08 00:12:36 +0200 | <hellwolf> | I know it's gonna be exciting for me to keep talking and not shut up. One last thing for labeling: |
2025-05-08 00:10:33 +0200 | <hellwolf> | maybe the final one is the end-to-end example: https://github.com/yolc-dev/yul-dsl-monorepo/blob/master/examples/demo/src/ERC20.hs This is in linear-types, in fact, my special linear-versioned-monad, which is definitely something I haven't seen prior art with my limited search |
2025-05-08 00:09:32 +0200 | <hellwolf> | alright, that's all for today :) |
2025-05-08 00:09:10 +0200 | <hellwolf> | *steal |
2025-05-08 00:09:08 +0200 | <hellwolf> | it's not a lambda based language. I still lambda from Haskell. |
2025-05-08 00:08:54 +0200 | <hellwolf> | but that's the entire language |
2025-05-08 00:08:52 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
2025-05-08 00:08:44 +0200 | <hellwolf> | with the help of the special verb. |
2025-05-08 00:08:34 +0200 | <hellwolf> | which I solved the sharing problem there, by having special functions that build the diagram "delicately" |
2025-05-08 00:08:03 +0200 | <hellwolf> | another one is Switch control flow |
2025-05-08 00:07:54 +0200 | <hellwolf> | so, the tight-loop is the special control flow |
2025-05-08 00:07:47 +0200 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds) |
2025-05-08 00:07:26 +0200 | <hellwolf> | to implement Foldable. |
2025-05-08 00:07:22 +0200 | <hellwolf> | I can't do infinite recursion stuff in this domain, I don't even have heap (I can emulate, but I dont' want to go there), so I need a special verb for tight-loop |
2025-05-08 00:06:41 +0200 | <hellwolf> | usually it's particular to the domain, or a special control structure |
2025-05-08 00:06:12 +0200 | <hellwolf> | I am very judicious of adding special verb, unless I can't find a categorical verb. |
2025-05-08 00:05:39 +0200 | <hellwolf> | special constructors/"verbs" are: MapHask, Switch, Jmp (jump to named function or built-in), Call (external messages), SGet/SPut (storage) |
2025-05-08 00:04:42 +0200 | <hellwolf> | I have Category/Monoidal/Cartesian/Cartesian Closed standard categorical "verbs" |
2025-05-08 00:03:36 +0200 | <hellwolf> | that's what I will be working on until the conferenc.e |
2025-05-08 00:03:27 +0200 | <hellwolf> | I can repl codegen and live demo :) |
2025-05-08 00:03:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-05-08 00:02:55 +0200 | <hellwolf> | this is the non-linear-type version with diagram duplication |
2025-05-08 00:02:46 +0200 | <hellwolf> | | let z = a + b * c in z * z |
2025-05-08 00:02:40 +0200 | <hellwolf> | this is linear-type version of working with pure diagrams |
2025-05-08 00:02:34 +0200 | <hellwolf> | | let z = a + b * c in dup'l z & uncurry (*) |
2025-05-08 00:02:20 +0200 | <tomsmeding> | sleep well |
2025-05-08 00:02:09 +0200 | <tomsmeding> | :p |
2025-05-08 00:02:00 +0200 | <hellwolf> | it's too exciting for me, I need to sleep to :D |
2025-05-08 00:01:53 +0200 | <hellwolf> | I can talk another time |
2025-05-08 00:01:51 +0200 | <hellwolf> | and I developed a technical of using linear types very ergonomically |
2025-05-08 00:01:40 +0200 | <hellwolf> | and linear types solvs the sharing completely |
2025-05-08 00:01:37 +0200 | <tomsmeding> | right |
2025-05-08 00:01:25 +0200 | <tomsmeding> | or alternatively, and more neatly, you write your AST as a base functor, and have two "fixpoint combinators" on top of that: the usual one (newtype Fix f = In (f (Fix f))) _after_ sharing recovery, and a labeled one (data Labeled f = Lab Int (f (Labeled f))) before sharing recovery |
2025-05-08 00:01:23 +0200 | <hellwolf> | semantics |
2025-05-08 00:01:20 +0200 | <hellwolf> | that's incorrect |
2025-05-08 00:01:18 +0200 | <hellwolf> | otherwise storage or external messages sent twice |
2025-05-08 00:01:10 +0200 | <hellwolf> | there you can't duplicate |