Skip to content
  • Richard Eisenberg's avatar
    Update levity polymorphism · e7985ed2
    Richard Eisenberg authored
    This commit implements the proposal in
    https://github.com/ghc-proposals/ghc-proposals/pull/29 and
    https://github.com/ghc-proposals/ghc-proposals/pull/35.
    
    Here are some of the pieces of that proposal:
    
    * Some of RuntimeRep's constructors have been shortened.
    
    * TupleRep and SumRep are now parameterized over a list of RuntimeReps.
    * This
    means that two types with the same kind surely have the same
    representation.
    Previously, all unboxed tuples had the same kind, and thus the fact
    above was
    false.
    
    * RepType.typePrimRep and friends now return a *list* of PrimReps. These
    functions can now work successfully on unboxed tuples. This change is
    necessary because we allow abstraction over unboxed tuple types and so
    cannot
    always handle unboxed tuples specially as we did before.
    
    * We sometimes have to create an Id from a PrimRep. I thus split PtrRep
    * into
    LiftedRep and UnliftedRep, so that the created Ids have the right
    strictness.
    
    * The RepType.RepType type was removed, as it didn't s...
    e7985ed2