Implement parsable functor-expression printer
The infrastructure of !20 (merged) can now hopefully be used to implement another functor printer that is less oriented towards debugging, but a step in the direction of implementing a minimize
command.
It should have the property that printFunctor . parseFunctor
and parseFunctor . printFunctor
are identities (ignoring whitespace differences, etc).
In contrast to !20 (merged), this eventually has to deal with parser precedence, i.e. parenthesis should be omitted where possible. But as a first approximation, it could also start by just parenthesizing every subexpression.