> I believe that ghc translates the signature above to > > foo :: forall q . Foo q => Double -> q > > (I don't understand why GHC does this... it seems to have more potential > for confusion)
I thought post 5.03 didn't do this? Isn't this the point of "Putting type annotations to use"? Or am I missing something? > This should more clearly show that foo is required to take a Double and > give, in return, anything in class Foo that is requested, which it > certainly does not (it always returns a Double). Right. > > > class Foo p where > > > instance Foo Double where > > > data T = forall q . Foo q => T q > > > foo :: Double -> T > > > foo p = T p > > > > which is very similar, except that the explicit universal quantification > > is happening in in the datatype and not the function type. > > Actually, this is not really universal quantification, it is existential > quantification. If you actually wrote a datatype that did universal I meant existential. Sorry _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
