[GHC] #12670: Representation polymorphism validity check is too strict
GHC
ghc-devs at haskell.org
Thu Oct 6 18:14:19 UTC 2016
#12670: Representation polymorphism validity check is too strict
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 8.2.1
Component: Compiler | Version: 8.0.1
(Type checker) |
Keywords: typeable | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
As of 465c6c5d15f8fb54afb78408f3a79e75e74d2cd4 GHC rejects this program,
{{{#!hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE RankNTypes #-}
module Hi where
import GHC.Exts
data TypeRep (a :: k) where
TrFun :: forall (r1 :: RuntimeRep) (r2 :: RuntimeRep) (a :: TYPE r1)
(b :: TYPE r2).
TypeRep a
-> TypeRep b
-> TypeRep (a -> b)
}}}
Claiming that it has inappropriate polymorphism over `RuntimeRep`,
{{{
$ ghc hi2.hs
[1 of 1] Compiling Hi ( hi2.hs, hi2.o )
hi2.hs:7:5: error:
• A representation-polymorphic type is not allowed here:
Type: a
Kind: TYPE r1
• In the definition of data constructor ‘TrFun’
In the data type declaration for ‘TypeRep’
}}}
I suspect this check is unnecessarily strict since we never need to store
a value of type `a` to represent `TypeRep a` at runtime.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12670>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list