Coding 2025-02-24
I have the option to just post basically nothing and call it a night, and there's a decent argument that I probably should, but I don't want to. Let's have a look at the matrix operation names so I can try to figure out how they should be named.
- @matrix: this one is fine actually
- flatten(): this combinator removes a layer of Facts; my gut says it should be called flattened() (I'm not calling it join())
- from_box(): aside from anything else, this is a bad constructor name, because it does not make a Matrix from a Box, but instead it retrieves a value from the Box; perhaps draw_from_box(), or maybe drawn_from_box()
- from_selection(): this has almost exactly the same problems and presumably solutions
- set_defaults(): recently renamed from include_box(), which is an improvement but I bet more can be done; with_defaults() perhaps?
- map_over_1_matrix() and map_over_2_matrices: the @matrix decorator handles the other cases; the obvious change here is to go from map to mapped, but that doesn't feel like it gets to the heart of the issue, somehow
- no_axes(): should really really really be something like constant_matrix(); I think this particular bad name is a legacy of when Matrix was called Parametric, and saying something like constant_parametric() made my teeth itch
- reduce_axes(): aside from the tense issue, the code is insufficiently commented/documented, and makes my brain hurt (also, I'm not calling it fold(), and I'm probably not calling it folded())
- shield(): new and untested, the purpose of this combinator is to prevent a single-value Matrix from being split into a multi-value Matrix if its Axes get product()ed with another Matrix (How does it do this? Kind of inefficiently, but in a correct manner.)
Well, there are a few ideas in there I can act on, but I'm still missing some key insight. I'm not getting it tonight; let's call it here.
Good night.