Coding 2022-07-15

By Max Woerner Chase

Nothing dramatic on writing today, because I've got to do a little research.

As far as drama goes... I got to work on that bug in MOTR, and in solving it, uncovered a much bigger design issue. Let's see if I can explain it...

So, Parametric objects are wrappers around a function, and bring in associated metadata that allow the library to basically construct product iterators, but iterating over a variable twice is basically the same as iterating over it once. Now, these functions can technically produce anything, but they have affordances around producing the IO types that handle coordination between actions in the core. Basic things they try to support:

If you read that last one carefully, you might be able to figure out how my initial implementation can, and just now, did go wrong...

My initial implementation said "You can iterate over variables that this function doesn't know about." But, it's actually totally valid to iterate over "extra" variables, as long as they don't take on more than one value. Now, the fields involved are just obscure enough now that I think I should take this opportunity to document them...

Relationships between these variables:

The basic things I need to handle are:

It's not immediately obvious to me how to do this, because the documentation is so bad right now. I'm basically going to have to do some documentation and renaming passes in order to make sense of everything. One code change I'm considering, is to create a custom container type for parameterizable values, but I'm not sure if that's necessary. Documentation first.

Well, sleep first, documentation later.

Good night.