Zoe
For Zoe’s birthday a year ago, I gave her a NACLO-style linguistics puzzle for a programming language that I invented (I could’ve made the puzzle an already-made language, but I didn’t want there to be an urge to look for documentation online). I’ve made a slightly modified version of the puzzle public.
Anyway, the interpreter I made wasn’t good. It was very slow, and I don’t really understand the theory behind lexers, parsers, and compilers, despite Crafting Interpreters being on my to-read list for a while.
Note: There are spoilers below.
The core inspiration for the language itself was trying to make
control-flow constructs like loops, conditionals, and functions emergent
rather than built-in (like how else if
in C is not built-in, but
rather a combination of else
and if
). This was done by treating
blocks as first-class objects. For example, a repeat
loop can achieved
by multiplying a block by an integer and then executing it.
If I was to extend this language, I’d make while
loops look nicer and
also allow blocks to take parameters and return values. I’d also make
blocks have their own scope and selectively capture values.
05 October 2022