Coding 2023-12-27
Hoo boy... I just roughed out the Protocol for handling the different behavior needed for ParametricCommand stuff, and keeping straight what it does is going to be a nightmare. I'll try to run through it quick before I get ready for bed. Basically, there's one method that takes a Matrix, and may modify it.
- If the method is called on the newtype-style wrapper, it must pass back its argument, unchanged.
- If the method is called, specifically on a ParametricCommand[Module, _program.T, _installer.T, _runner.T], it must accept a Matrix[ModuleRunner[_entry.T, Any, _installer.T], and return a Matrix[GenericRunner[_entry.T, _program.T, _installer.T, _runner.T]].
Strictly speaking, it probably doesn't have to be quite so detailed with the types, but every Any makes it harder to think about. Either way, I'll see if I'm up for implementing all this tomorrow.
Good night.