Sat Oct 15 17:03:36 EDT 2011
Let's add one more instance to TermApp so it can also unpack input
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.