On Thu, Jun 19, 2003 at 11:08:35AM -0500, Ed Komp wrote:
>  > | type BaseType = Either Integer ( Either Bool () )
>  > |
>  > | type Value = (Either Double BaseType)
>  > |
>  > | data Foo =  forall x. (SubType x BaseType)  => MkFoo x
>  > |
>  > | test :: Foo -> Value
>  > | test (MkFoo x) = inj x
> 
> 
> 'x' is the variable I am concerned about.
> Since it is an argument to MkFoo,
> we know that (SubType x BaseType)
> and we also know that:
> 
> NOT  (SubType Double BaseType), so 'x' cannot be instantiated as Double.

I'm missing something.  Why do we know NOT (SubType Double BaseType)?
Nothing in the code above prevents you from having such an instance,
does it?

Peace,
        Dylan

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to