[EMAIL PROTECTED] wrote:
>
> I'm afraid I may disagree about the quantification. Also, I'm cautious
> about the phrase "ML and Haskell". In GHC 6.4, local type variables
> behave pretty much like those in ML (actually, GHC 6.2 was closer). In
> GHC 6.6, the behavior is completely different!
>
> Regarding the quantification: in ML (OCaml) we can write
>       let foo (x:'a) y = (x+1,(y:'a))
> That does not mean that foo has the type forall 'a. 'a -> 'a -> ...
> Indeed, foo is not polymorphic and its inferred type is int -> int ->
> int * int. If there should be a quantifier in the above type, it
> probably should be 'exists' rather than 'forall'.  It seems in ML, the
> type variables are better understood as names of some types;

Be cautious about the phrase "ML" here as well. ;-) Because what you
describe only applies to OCaml. In Standard ML, the semantics of type
variables in annotations is saner: the equivalent of the above declaration
would be rejected. AFAICS it is basically equivalent to the new behaviour
of GHC 6.6.

Cheers,
- Andreas


_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to