X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FExternalCore.lhs;h=359419ca0654a1f8f3da9479b60ead108cc10e1c;hb=f9c3194e1d4f0f1c370fd059192565b1e7943bf1;hp=a326a54a6cdba213f42ddfeb5084e19b64a71666;hpb=e4417dcd4679da9c6b18c02ff667199c572bed89;p=ghc-hetmet.git diff --git a/compiler/coreSyn/ExternalCore.lhs b/compiler/coreSyn/ExternalCore.lhs index a326a54..359419c 100644 --- a/compiler/coreSyn/ExternalCore.lhs +++ b/compiler/coreSyn/ExternalCore.lhs @@ -4,13 +4,12 @@ \begin{code} module ExternalCore where - data Module = Module Mname [Tdef] [Vdefg] data Tdef = Data (Qual Tcon) [Tbind] [Cdef] - | Newtype (Qual Tcon) (Qual Tcon) [Tbind] (Maybe Ty) + | Newtype (Qual Tcon) (Qual Tcon) [Tbind] Ty data Cdef = Constr (Qual Dcon) [Tbind] [Ty] @@ -51,11 +50,21 @@ data Alt type Vbind = (Var,Ty) type Tbind = (Tvar,Kind) +-- Internally, we represent types and coercions separately; but for +-- the purposes of external core (at least for now) it's still +-- convenient to collapse them into a single type. data Ty = Tvar Tvar | Tcon (Qual Tcon) | Tapp Ty Ty | Tforall Tbind Ty +-- We distinguish primitive coercions because External Core treats +-- them specially, so we have to print them out with special syntax. + | TransCoercion Ty Ty + | SymCoercion Ty + | UnsafeCoercion Ty Ty + | InstCoercion Ty Ty + | NthCoercion Int Ty data Kind = Klifted