Existentials
Doaitse Swierstra
doaitse@cs.uu.nl
Thu, 17 Apr 2003 10:05:52 +0200
I think that (in line with the other type notation conventions where
you do not have to be explicit) you should not be forced to write
anything at all, but I am sure I will remain a minority ;-}
Doaitse Swierstra
On donderdag, apr 17, 2003, at 10:02 Europe/Amsterdam, Simon
Peyton-Jones wrote:
> Dear GHC users, Hugs users, and Hugs implementors
>
> Many of you have grown to love existential data types, which we current
> write like this:
>
> data T = forall a. Foo a (a -> Int)
>
> Mark and I chose 'forall' rather than 'exists' to save grabbing another
> keyword from the programmer. And indeed, the type of the constructor
> Foo is
> Foo :: forall a. a -> (a->Int) -> T
>
> But every single time I explain this to someone, I find I have to make
> excuses for using the term 'forall'. I say "it really means 'exists',
> but we didn't want to lose another keyword".
>
> I have gradually concluded that our decision was a mistake. (In
> fairness to Mark, I think I was the primary advocate for it.) I reckon
> that we should
>
> Allow 'exists'
> Deprecate 'forall' (for defining existentials, that is)
> Eventually allow only 'exists'
>
>
> Does anyone have any opinions on this topic? It's a small point, but
> one that bites quite frequently. It might even be possible to arrange
> that 'forall' and 'exists' were only keywords in types, and not in
> terms, but I'm not sure it's worth the bother.
>
> I don't think it affects NHC, because it's not H98 anyway.
>
>
> Simon
>
>
> _______________________________________________
> Hugs-Users mailing list
> Hugs-Users@haskell.org
> http://www.haskell.org/mailman/listinfo/hugs-users