[GHC] #11011: Add type-indexed type representations (`TypeRep a`)
GHC
ghc-devs at haskell.org
Sun Jan 31 10:00:21 UTC 2016
#11011: Add type-indexed type representations (`TypeRep a`)
-------------------------------------+-------------------------------------
Reporter: bjmprice | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version:
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by bgamari):
One bit of trickiness that I've encountered while looking at this is the
that fact Core Lint disallows unsaturated applications of unlifted types.
So, for instance, if we have,
{{{#!hs
data TTTypeRep (a :: k) where
TrTyCon :: !Fingerprint -> !(TyCon a) -> TTypeRep (a :: k)
TrApp :: forall k1 k2 (a :: k1 -> k2) (b :: k1).
!Fingerprint
-> TTypeRep (a :: k1 -> k2)
-> TTypeRep (b :: k1)
-> TTypeRep (a b)
}}}
And we ask for `Typeable (Array# Int)`, we will attempt to decompose
`Array# Int` and end up with a subterm,
{{{#!hs
array#Rep :: TTypeRep Array#
array#Rep = TrTyCon @(* -> #) @Array# fprint array#TyCon
}}}
in the resulting representation, which currently fails Core Lint due to,
{{{#!patch
diff --git a/compiler/coreSyn/CoreLint.hs b/compiler/coreSyn/CoreLint.hs
index 26e7257..861a9bc 100644
--- a/compiler/coreSyn/CoreLint.hs
+++ b/compiler/coreSyn/CoreLint.hs
@@ -1042,7 +1042,7 @@ lintType ty@(TyConApp tc tys)
= lintType ty' -- Expand type synonyms, so that we do not bogusly
complain
-- about un-saturated type synonyms
- | isUnliftedTyCon tc || isTypeSynonymTyCon tc || isTypeFamilyTyCon tc
+ | isTypeSynonymTyCon tc || isTypeFamilyTyCon tc
-- Also type synonyms and type families
, length tys < tyConArity tc
= failWithL (hang (text "Un-saturated type application") 2 (ppr ty))
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11011#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list