2025/05/07

Newest at the top

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 +0200merijn(~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 +0200machinedgod(~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 +0200merijn(~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
2025-05-08 00:01:07 +0200 <hellwolf> so, I try to use linear-types only for effectful stuff
2025-05-08 00:00:38 +0200 <hellwolf> could be a next step in next version.
2025-05-08 00:00:27 +0200 <hellwolf> that's an interesting idea
2025-05-08 00:00:13 +0200 <tomsmeding> I'd rather say that every constructor in your GADT gets an additional field: the label
2025-05-08 00:00:02 +0200 <hellwolf> heh, yea, my domain happens to have small programs; safety is more important there, which I am trying to sell
2025-05-08 00:00:02 +0200 <hellwolf> 05-08 00:59 <tomsmeding> your users whose program now takes ages, will care