$Id: HashCaml.bugs 784 2006-04-26 13:16:49Z jnb26 $ Current open issues: - Normalisation is not w.r.t. type equalities - Free univars in record marshalling work only in simple cases. - Normtype should De Bruijn over the whole struct, not per type. This may give rise to some mistaken accidental type equalities. - Normalisation of types involving extended paths (those containing formal applications of functors) eg F(U).t, re-evaluates the functor application in order to find the value of the resulting myname field. This is a performance issue in any case (which could be solved by constructing a "skeleton" functor that just performs any myname calculation), but for functors with non-pure bodies it is a semantic problem. This may happen also with module aliases to such applications. Further, the fact that we are not normalising w.r.t. type equalities means the resulting runtime type reps are not easily predictable. Additional desirable features: - existentials (explicitly typed) - normalisation w.r.t. the order of clauses in variant and record type definitions - a flag to turn off type passing