Sun Feb 14 15:32:34 CET 2010

Cleanup: sparate Ai.hs and Term.hs

Recovering sharing seems to work.  What's next?  Abstracting it such
that different number systems can reuse the sharing + flattening code.

It's probably easier to build build the syntax tree on top of a shared
data type, than to abstract the recursion pattern.  Or not?

What do we really need more than an ordinary fold?

Some guideline: datatypes and pattern matching functions are lowlevel
and don't compose easily, operators are highlevel and compose in a
straightforward ways.

It's probably simpler to keep what is now Ai.hs to be the language
backbone, and separate it from the abstract interpretation.