Coding 2023-09-22
Minor meta note: I somehow accidentally stopped using Neovim for most purposes. So, while I'm in that situation, I figured I might as well look into alternatives. I've been hearing stuff about Kakoune and Helix, and because I literally only use Git in depth when I'm being paid for it, I decided to look into Kakoune since it should in theory be more amenable to getting it working with Mercurial and maybe Pijul. But doing that means I immediately need to understand how to write a .kak file, so that's... a thing.
Anyway, I was thinking some more about the whole catamorphism rabbit hole I went down yesterday, and I realized something that I need to deal with... Impliciula currently inherits Koka's usage of curly braces for blocks/anonymous functions, so it's not obvious to me how to make OCaml-style records work, but the interesting syntax I'm trying to make work means that I can't have Koka-style structs. I have an inkling of an idea for how to make this work nicely, but it needs some time to stew. I'll at least try to explain it for now...
I'm right now working under the assumption that blocks can have different internal semantics, and even syntax, in different contexts, where context is indicated by a prefix. So, for example, a signature block can contain a bare type declaration, while a structure block has to assign a type expression. As such, the easy solution is to come up with "record" and "record type" blocks, and see if I can come up with better names.
I don't have anything else in me for tonight, so let's leave it there and hope I'm vaguely rested tomorrow.
Good night.