think about how editing the tree would work. We have to update every single zipper whenever we do edits, right?
MathLayout: For editing, things that the user chooses like "this is a bracket and that is an absolute value sign" belong here
MathIR: The on-the-fly parsed data that tells me how to ideally render a given MathLayout, how to turn it into MathJson, and how to do advanced editing features like "delete word" (write "1+234" and put caret at end. Then shift+backspace deletes "234")
think about how editing the tree would work. We have to update every single zipper whenever we do edits, right?
MathLayout: For editing, things that the user chooses like "this is a bracket and that is an absolute value sign" belong here
MathIR: The on-the-fly parsed data that tells me how to ideally render a given MathLayout, how to turn it into MathJson, and how to do advanced editing features like "delete word" (write "1+234" and put caret at end. Then shift+backspace deletes "234")