2026/02/07

Newest at the top

2026-02-07 11:41:22 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-07 11:40:14 +0100gentauroless is more
2026-02-07 11:40:09 +0100 <gentauro> but I guess if we can do something like that in OCaml for .NET, we should probably be able to mimic that in Haskell right?
2026-02-07 11:38:50 +0100gentauroI want to remove the string variables and just rely on the languages value binding
2026-02-07 11:38:07 +0100AlexZenon(~alzenon@85.174.182.86) (Ping timeout: 240 seconds)
2026-02-07 11:37:54 +0100 <gentauro> very succint
2026-02-07 11:37:45 +0100 <int-e> (managing your own names is probably suboptimal)
2026-02-07 11:37:37 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-07 11:37:35 +0100 <gentauro> probie: I tried to use Code Quotations and Computation Expressions in F# and I end up with this -> https://paste.tomsmeding.com/bi5MGjco
2026-02-07 11:37:24 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-07 11:37:00 +0100 <int-e> probie: Well, in the Z3 API, generating fresh names is tied to function declarations, https://z3prover.github.io/api/html/group__capi.html#ga76d673b3b3f53c1044fd59621b1b8b68 (nice anchor I'm sure it's very stable)
2026-02-07 11:35:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-07 11:33:57 +0100AlexZenon(~alzenon@85.174.182.86)
2026-02-07 11:33:03 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 260 seconds)
2026-02-07 11:31:40 +0100p3n(~p3n@217.198.124.246) p3n
2026-02-07 11:31:17 +0100 <probie> I mean you certainly could do something like `do { name <- freshName "q1"; mkVar intType name }`, but I don't think you really gain much
2026-02-07 11:30:48 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed)
2026-02-07 11:30:21 +0100p3n(~p3n@217.198.124.246) (Quit: ZNC 1.10.1 - https://znc.in)
2026-02-07 11:28:34 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-07 11:28:16 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-02-07 11:27:06 +0100 <probie> I guess you could have have a `make` function which takes various kinds of records as arguments, but in practice that's not ergonomic, and it also deviates heavily from the C API, which is why most of the documentation you'll find online is
2026-02-07 11:26:27 +0100 <probie> gentauro: how would you shrink it, short of abbreviating things. You need to convey 4 things; "it's new", "the name can't be anything already generated", "it's an int" and "it's a var"?
2026-02-07 11:25:29 +0100AlexNoo__(~AlexNoo@85.174.182.86) (Ping timeout: 260 seconds)
2026-02-07 11:25:20 +0100 <jreicher> Oh, I think I know what you mean
2026-02-07 11:25:06 +0100 <jreicher> gentauro: "Hungarian notation"?
2026-02-07 11:25:03 +0100 <gentauro> probie: to verbose (at least for me)
2026-02-07 11:24:42 +0100AlexNoo(~AlexNoo@85.174.182.86)
2026-02-07 11:24:19 +0100AlexNoo_(~AlexNoo@85.174.182.86) (Ping timeout: 260 seconds)
2026-02-07 11:23:38 +0100Alex_delenda_est(~al_test@85.174.181.199) (Ping timeout: 256 seconds)
2026-02-07 11:23:28 +0100AlexNoo(~AlexNoo@85.174.181.199) (Ping timeout: 246 seconds)
2026-02-07 11:23:22 +0100 <probie> `Fresh` promises no name collisions, `Int` tells you the type, and `Var` tells you that it's a variable
2026-02-07 11:22:50 +0100AlexZenon(~alzenon@85.174.181.199) (Ping timeout: 245 seconds)
2026-02-07 11:22:46 +0100 <probie> gentauro: What's wrong with it?
2026-02-07 11:21:55 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
2026-02-07 11:20:41 +0100AlexNoo__(~AlexNoo@85.174.182.86)
2026-02-07 11:19:55 +0100AlexNoo_(~AlexNoo@85.174.182.86)
2026-02-07 11:18:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-07 11:17:59 +0100gentaurofeels like: `AbstractAnimalThatLivesInWaterAndHasGillsAndFins.class`
2026-02-07 11:16:42 +0100 <gentauro> `mkFreshIntVar` <- Hungarian notation for the win? Nah
2026-02-07 11:12:58 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 246 seconds)
2026-02-07 11:12:47 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-07 11:09:04 +0100trickard_trickard
2026-02-07 11:07:33 +0100 <jreicher> Codegen helps muddy the waters even further.
2026-02-07 11:05:58 +0100 <jreicher> I think the defining characteristic of Lisp is "no code, everything is data" which is why it gets confused with the presentation of sexprs
2026-02-07 11:04:53 +0100 <jreicher> Yes I think that's probably my point too. sexpr != lisp despite what everyone thinks
2026-02-07 11:03:52 +0100 <probie> The Z3 monad is really just a codegen monad
2026-02-07 11:03:12 +0100 <probie> They just chose S-expressions, because "everyone" in AI at the time was familiar with them
2026-02-07 11:02:33 +0100 <probie> gentauro: There's very little lispy-ness in the SMTLIB2 format. It might as well be JSON, YAML or something entirely bespoke
2026-02-07 11:01:57 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-07 10:57:40 +0100 <jreicher> What do you mean? Lisp is not great for stuff like this.