#7347: Existential data constructors should not be promoted
-------------------------------+--------------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: merge
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.1
Resolution: fixed | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Difficulty: Unknown
Testcase: polykinds/T7347 | Blockedby:
Blocking: | Related:
-------------------------------+--------------------------------------------
Changes (by simonpj):
* status: closed => merge
Comment:
After further discussion with Richard and Stephanie we decided to promote
data constructors where
* The type constructor has no kind polymorphism; indeed has kind `* ->
.... -> *`.
* The data constructor has no constraints (equality or otherwise) in its
type
* The argument types of the data constructor are all promotable
This restores the 7.6.1 behaviour, and that turns out to be useful for
Richard and/or Pedro.
I'm not sure why Stefan's original bug report is a bug. In his example
{{{
data K = forall a. T a -- promotion gives 'T :: forall k. k -> K
data G :: K -> * where
D :: G (T [])
}}}
the promoted kind of `'T` is poly-kinded, and that makes its use in `D`
fine. So currently it is accepted and I think we agree it should be.
The reminaing open issue concerns data types that have some promotable and
some non-promotable constructors, but I'll open a new ticket for that.
Ian, I this this should merge smoothly onto 7.6.1, along with a doc patch
that I'll commit shortly.
Simon
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7347#comment:16>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs