Consider the following:
data SimpExist a = SimpExist (forall x . x - a)
f :: SimpExist Bool
f = SimpExist (const True)
g = SimpExist id
What is the type of g? In a similar example, GHC tells me it is of
type SimpExist c. Yet, I can't unify it with any other SimpExist c'.
It seems to me that
Hello,
Consider the following:
data SimpExist a = SimpExist (forall x . x - a)
f :: SimpExist Bool
f = SimpExist (const True)
g = SimpExist id
What is the type of g? In a similar example, GHC tells me it is of
type SimpExist c. Yet, I can't unify it with any other SimpExist c'.
Have you tried
On 9/21/06, Bruno Oliveira [EMAIL PROTECTED] wrote:
Have you tried to type check this example (the g)?
No. Please excuse me, as I wasn't by my GHC at the time. Let's try:
data SimpExist a = Base a
| SimpExist (SimpExist (forall x . x - a))
g :: SimpExist (forall a . a - a)
g =
When I look at the generated core, I see that both h and
same = Base undefined
have the same type:
%forall a . main:Fonly.SimpExist a
I'm using GHC 6.5.20060819.
If this is a bug, I actually find it kind of useful, for reasons I can
elaborate later.
Jim