Diary 2023-08-23

By Max Woerner Chase

The Cohost writing is almost done. It just wants some syntax examples. Which means I need to write the lexer. Which means I need to figure out if my current ideas actually lex.

The issue I need to work out focuses on two special values I need to handle. The simple part is that I want _ to be handled specially, but the special handling doesn't need to be in the lexer, so whatever. The complicated part is...

So, I'm trying to base the function syntax off of Smalltalk, sort of. And one of the "great" ideas I came up with was to use : not just as a terminator (and sometimes starting character) for parts of a function name, but to represent an unevaluated function using :: instead, so : is used to indicate partial evaluation. (The starting character version is because I decided that I wanted to allow having an argument before the function name. Smalltalk doesn't have to specially represent this because—OH MY GOSH, LOOK OVER THERE)

So, the idea is that there will be functions like :is-even which can be delayed by writing as ::is-even, and part of my uncertainty about all of this is how to put everything into a nice canonical form.

Anyway, it's too late for me to think about all of this, so I'm going to wrap up.

Good night.