projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge ghc-new-co into master branch
[ghc-hetmet.git]
/
compiler
/
coreSyn
/
ExternalCore.lhs
diff --git
a/compiler/coreSyn/ExternalCore.lhs
b/compiler/coreSyn/ExternalCore.lhs
index
a326a54
..
359419c
100644
(file)
--- a/
compiler/coreSyn/ExternalCore.lhs
+++ b/
compiler/coreSyn/ExternalCore.lhs
@@
-4,13
+4,12
@@
\begin{code}
module ExternalCore where
\begin{code}
module ExternalCore where
-
data Module
= Module Mname [Tdef] [Vdefg]
data Tdef
= Data (Qual Tcon) [Tbind] [Cdef]
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]
data Cdef
= Constr (Qual Dcon) [Tbind] [Ty]
@@
-51,11
+50,21
@@
data Alt
type Vbind = (Var,Ty)
type Tbind = (Tvar,Kind)
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
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
data Kind
= Klifted