diff options
author | Richard Eisenberg <rae@cs.brynmawr.edu> | 2017-01-30 22:45:16 -0500 |
---|---|---|
committer | Richard Eisenberg <rae@cs.brynmawr.edu> | 2017-01-30 22:45:16 -0500 |
commit | b6558d80072257b9bd41fb6099a86e7411c8ba97 (patch) | |
tree | 0baddc726f613cb229a3a52f113b603c7091800d /compiler/coreSyn/CoreSyn.hs | |
parent | e554ac3e19eec3bb738caa74d74609b05b312a7e (diff) | |
download | haskell-wip/t11715.tar.gz |
Checkpoint after renamingwip/t11715
Diffstat (limited to 'compiler/coreSyn/CoreSyn.hs')
-rw-r--r-- | compiler/coreSyn/CoreSyn.hs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/coreSyn/CoreSyn.hs b/compiler/coreSyn/CoreSyn.hs index 2a5752ccb7..00b778a253 100644 --- a/compiler/coreSyn/CoreSyn.hs +++ b/compiler/coreSyn/CoreSyn.hs @@ -439,12 +439,12 @@ The levity-polymorphism invariants are these: * The type of a term-binder must not be levity-polymorphic * The type of the argument of an App must not be levity-polymorphic. -A type (t::TYPE v r) is "levity polymorphic" if 'r' has any free variables. +A type (t::TYPEV v r) is "levity polymorphic" if 'r' has any free variables. (It's OK from the code generator's point-of-view if v has free variables.) For example - \(r::RuntimeRep). \(a::TYPEvis r). \(x::a). e -is illegal because x's type has kind (TYPEvis r), which has 'r' free. + \(r::RuntimeRep). \(a::TYPE r). \(x::a). e +is illegal because x's type has kind (TYPE r), which has 'r' free. See Note [Levity polymorphism checking] in DsMonad to see where these invariants are established for user-written code. |