Coding 2026-01-24
Okay. So.
I'm midway through making a change to the codebase, and I need to slow down a bit and see if I should make any course corrections. Basically, here's what happened:
- I made a few base classes covariant, which allowed me to delete a bunch of code and addressed some problems I was anticipating with my efforts to rework the modules representing the different parts of the lambda cube.
- That rework has several prongs. One is that I want to encode the node typing directionality into the type system, even though that can't be part of the syntax tree itself. Another is that I want to make it a little easier to work with variables. Finally, at least for now, I'm doing this in the form of static methods on helper classes, so I can reuse them via subclassing.
I've got the helper classes together, but I'm not totally happy with the way this is requiring the tests to be updated. I think some of the changes are improvements, but I'm not sure how to do some of the updates. The big user-facing change is that nodes with a variable binding are created by taking a function as an argument, that accepts a variable and returns the scope where the binding is live. This means that the user doesn't need to juggle the different data types to set things up for these nodes.
Anyway, I don't have anything else to consider or talk about right now, so I'm going to wind down.
Good night.