Fri Oct 14 17:21:26 EDT 2011
So what about this one:
class TermApp f where
termApp :: f -> [VarName] -> ([STerm], m [STerm])
Starting from a function and a variable name supply, produce a list of
input/output variables, with the latter wrapped in a binding monad.
The have to be STerm and not Term because we can't put the latter in a
list due to typing constraints.
The first problem to solve is, how to create a Term t object from an
STerm? Maybe that's the real deal here: how to create properly typed
Maybe that's it. Am I looking at this the wrong way? Map a function
to its inputs and outputs and be done..