Something I realized working on the OCaml language server and more recently with this continuous checker: concrete syntax is actually pretty important.
Conventional wisdom is that it doesn't matter much; the abstract syntax is all you care about.
This isn't the case if your goal is to provide interactive analysis as early as possible while editing.
You can't provide ideal feedback within ambiguous parsing contexts so you need to design the grammar to minimize use of lookahead to disambiguate.
Finally starting to make good progress on sketching out the incremental or continuous type-checker.
Maybe "continuous" is better terminology as it's more about providing typing information continuously in response to syntax streams than the ability to pause/resume.
The way I'm looking at doing this now is to have a kind of interleaved parsing/checking stack machine that consumes the lexer stream and produces the typing state (and a refined syntax tree for the compilation units eventually too).
Something I really want to do with 1caml is have both incremental parsing and type-checking built into the implementation from the start since this should make it easier to build language-server-like tooling with interactive features.
I think I've got the incremental parsing sorted out thanks to menhir.
The type-checking is less straight forward but it looks like you basically end up having to reformulate the rules to operate on something like a spine calculus version of the language syntax.
I've started working on a 1ML implementation targeting the #OCaml runtime via malfunction.
Still very early but the project is up at https://github.com/1caml/1caml
So against my better judgement I decided to update the bios on my main system earlier today because of weird stability issues I was having and since the changelog literally says "improve system stability" (I know, right?)
Four hours and several reflashes later, I finally get the undoubtedly much more stable system to post again.
So far no more weird issues after that but they should've added an "(if you can get it to boot…lol)" to the changelog.
Welp. Pretty much a computers suck kind of day…
#introduction Hi, I'm Darin.
In a previous life I spent way too much time studying #philosophy (I like #antirealism) and later #typetheory (I like #intuitionism and all the newer weirder shit Girard writes about).
These days I spend way too much time thinking about #synthesizers, especially #modular #eurorack.
I do a little bit of programming, mostly in #agda, #ocaml and #rust.
I'm currently trying to learn enough about hardware dev (#arm, #xilinx, #xmos mostly) to make my own synth modules.