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
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.