Re: Fw: Question aboutthe use of an inner forall

Jan Brosius
Still some question: Ok a is not a type but Integer is a type . But a can be instantiated to integer. This comes pretty close to call a therefore a type variable, Isn't it?
And otherwise why writing forall a etc.
If s, t are types, the type s -> t says ``give me a value of type s, and I'll give you a value of type t''. If a is a type variable, and (given a is a type) s is a type, then forall a. s says ``give me a type t, and I'll give you a value of type s[t]''. More specifically, if you write
f :: a -> b
f has the form (\ x :: a -> (y :: b)), where the \ binds values. If you write
f :: forall a. a
f has the form (/\ a -> (x :: a)), where the /\ binds types. Now, runST's argument has type forall s. ST s a. In other words, it's essentially a function over types---and it has to take /any/ type runST wants to hand it.
Regards
Scott
Jon Cast
participants (1)
-
Jon Cast