Sebastian Sylvan wrote:
On 19/10/2007, Kalman Noel <[EMAIL PROTECTED]> wrote:
   data ExistsNumber = forall a. Num a => Number a

I'm without a Haskell compiler, but shouldn't that be "exists a."?
IIRC forall will work too, but the "right" way to do it is "exists",
right?

No. It's been suggested but that's not how GHC or Hugs existentials work.

The syntax isn't actually illogical, it's just very confusing. What (by convention) you are actually doing here is you are annotating the type of the constructor. So you are saying that the constructor 'Number' has the type "forall a . Num a => a -> ExistsNumber".

This is perfectly correct, but it is confusing that what you are doing is annotating the *constructor* and not the data-type itself, per se, although it doesn't much look like it.

This looks very very much clearer in GADT syntax, since in GADT syntax you always give constructors explicit types:

type ExistsNumber where
   Number :: forall a . Num a => ExistsNumber a


Jules
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to