> As Mark Jones has allready said  this thread should end or come to a
> conclusion. Unfortunately he said more than that . He said that the
> discussion was all about the difference  a -> a  and forall a. a -> a . And
> that's not
> true . One only has to read the first  2 or 4 emails about this thread of
> discussion.

I can't resist another comment.  I think you are both right here.
In Haskell there are no free type variables, it just looks as if there
is because of a Haskell convention.  If you write
  f :: a -> a
it really means
  f :: forall a . a -> a
So if "a -> a" appears as a type signature it is indeed equal to 
"forall a . a -> a" because Haskell has implicit forall quantifers for
the free type variables of a signature.

On the other hand, if we talk about a subexpression having type "a -> a"
(which there is no syntax for in Haskell) this does not imply that it has
type "forall a . a -> a", but rather that it has a type where the variable
"a" has been bound in some outer scope.

I think the source of all this debate is the convetion that type variables
are implicitely quantified.  I agree with Jon here, it was a mistake.

        -- Lennart

Reply via email to