Several issues remain to be addressed:
- Efficiency: how to organize patterns for efficient search.
- Recursion to transform substructures as well as the main expression.
- Repetition to transform an expression as many times as possible.
- Termination: can the program get into a loop by transforming an
expression and then transforming it back to its original form?
- Restricted matching, e.g., certain pattern variables might be
allowed to match only numeric constants.
- Evaluation of expressions in the output pattern, e.g. to fold constants.