Coding 2023-11-01
I'm going to switch gears tomorrow, but until then, I've been having a look at the parts of MOTR that I want to update, and one thing that I have to deal with is that I'm not sure what my endgame was seven or eight months ago. My goal currently is to put together a tower of types, based on constructing types like GeneralizedType = SpecializedType[SomeType | T]. It looks like my thought process at the time was "So, I want to devise a more specialized type for environment variables, because the higher layers in the stack need that, and it [apparently] makes sense to plumb that back down to the lowest layer where it's relevant; oh, but I should make sure to avoid breaking backwards compatibility". Frankly, it looks like I was wrong about that last bit, because my current motrfile doesn't seem to set any environment variables. That means I should be able to mess with it however I want.
And what I'm currently thinking is:
- Ditch the LegacyEnvVar concept, and get everything working with EnvVar.
- Create a compound type that works with arguments and environment variables via a single type variable.
- Create another compound type that bundles that type with the implicit io, using a separate type variable. (Might not go with this, not sure.)
- Make a new helper function to take these new types.
- Propagate these types up the layers of abstraction.
- (NOTE: I cannot change the Cmd type currently, because it's being used directly by the Motrfile.)
- This should get rid of a Metadata type, at the cost of potentially adding more fields to another class that needs a redesign anyway.
I won't try to work on this tonight; at some point I'll be back on this. For now, I should wrap up, and figure out how sick I am or am not...
Good night.