Tue Sep 6 14:53:09 CEST 2011

Primitive data

The SigState class needs to be more general, and should also apply to
inputs and outputs.  It should capture the relation between abstract
data and "flat" data for the compilation target.

Renamed to PrimData.


  - Can have only one primitive type due to s -> p fundep.  This makes
    sense in that states really can be general: we can compily
    anything to [p], so p needs to be fixed to one single type.

    Can it be done with a quantification instead of fundeps?  I don't
    know.  I don't understand why this doesn't make sense:

      instance forall p. ((PrimData p a, PrimData p b) => PrimData p (ProdData a b)) 

    However, only supporting a single concrete type is not a problem:
    it looks like class instances can be module local, so if multiple
    primitives need to be combined, they can at least be hidden behind
    module interfaces.