[GHC] #10995: Existentials in newtypes
GHC
ghc-devs at haskell.org
Wed Oct 21 07:43:28 UTC 2015
#10995: Existentials in newtypes
-------------------------------------+-------------------------------------
Reporter: crockeea | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 7.10.2
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #10715 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Changes (by thomie):
* cc: goldfire (added)
* component: Compiler => Compiler (Type checker)
* related: => #10715
Comment:
HEAD also compiles your first example without errors. Your second example
results in the error messages below.
The `pprTrace "RAE1"` is from 2f9809efdbc11fee445dbe3d5c555433ec3c5e6a
(#10715).
{{{
$ ghc-7.11.20151019 Test.hs
[1 of 1] Compiling Test ( Test.hs, Test.o )
RAE1
[W] cobox_apw :: k0_apq[tau:3] ~ k_apn[sk] (CNonCanonical)
k0_apq[tau:3]
k_apn[sk]
False
Test.hs:10:22: error:
Couldn't match kind ‘k0’ with ‘k’
‘k0’ is untouchable
inside the constraints: Ctx2 c a b
bound by the type of the constructor ‘P1’:
Ctx2 c a b => Proxy b -> Int
at Test.hs:10:22
‘k’ is a rigid type variable bound by
the type of the constructor ‘P1’:
(forall (b :: k). Ctx2 c a b => Proxy b -> Int) -> Proxy1 c a
at Test.hs:10:22
Expected type: Proxy b -> Int
Actual type: Proxy b -> Int
In the ambiguity check for the type of the constructor ‘P1’:
P1 :: forall c a (k :: BOX).
(forall (b :: k). Ctx2 c a b => Proxy b -> Int) -> Proxy1 c a
To defer the ambiguity check to use sites, enable AllowAmbiguousTypes
In the definition of data constructor ‘P1’
In the newtype declaration for ‘Proxy1’
Test.hs:10:22: error:
Could not deduce: Ctx2 c a b
from the context: Ctx2 c a b
bound by the type of the constructor ‘P1’:
Ctx2 c a b => Proxy b -> Int
at Test.hs:10:22
In the ambiguity check for the type of the constructor ‘P1’:
P1 :: forall c a (k :: BOX).
(forall (b :: k). Ctx2 c a b => Proxy b -> Int) -> Proxy1 c a
To defer the ambiguity check to use sites, enable AllowAmbiguousTypes
In the definition of data constructor ‘P1’
In the newtype declaration for ‘Proxy1’
Test.hs:10:22: error:
A newtype constructor cannot have existential type variables
P1 :: forall c a (k :: BOX).
(forall (b :: k). Ctx2 c a b => Proxy b -> Int) -> Proxy1 c a
In the definition of data constructor ‘P1’
In the newtype declaration for ‘Proxy1’
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10995#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list