Sat Oct 15 17:03:36 EDT 2011

Uncurried input

Let's add one more instance to TermApp so it can also unpack input
binary tuples.

Now this was rediculously elegant:

-- Allow tuple inputs.
instance CodeApp m (i1 -> i2 -> f) => CodeApp m ((i1,i2) -> f) where
  codeApp is f = codeApp is $ \i1 i2 -> f (i1, i2)

This means that I have now a way to treat functions like (s,i) ->
(s,o).  Because the input state types are the same, this only needs to
know the size of that first tuple (== s_n) to take the first s_n
elements from a flattened i/o list as returned by genFun.