Coding 2026-01-10

By Max Woerner Chase

I think I've fixed the issues in my plan for fixing the conlang code, so I'm going to sleep, see if any more objections occur to me, then start updating the code.

For now, I'm trying to give the same sort of treatment to my planned rewrite of Impliciula. Here's what I'm thinking. Sub-packages for STLC (always available), failure, universal, existential, operator, and record. Each sub-package defines a marker class in a module with no dependencies, puts its nodes in as many modules as feels right, and provides a mixin class for constructing nodes without having to bring in the node classes. Then, the different sets of allowable nodes can be specified just by combining the marker classes and mixins.

The other side of this is, I feel like there has to be some way to parameterize the allowable scalar node types, but I could just be wrong about that. I'm not currently doing it, and not trying would reduce the implementation effort, so...

Anyway, I just noticed that one wrinkle is the typing around coercion. I want to make failure types be distinct, which means that the Failing protocol needs to somehow account for that, and how it can do that is not obvious to me at this time.

By the way, "this time" is pretty late, and I should get to bed.

(I think the answer for now is to just do a bunch of overloads or something like that.)

Good night.