> I just meant it's not immediately clear how > > foo :: forall x. (x -> x -> y) > > is different from > > foo :: (forall x. x -> x) -> y > > It takes a bit of getting used to.
Those are different functions all together, so perhaps you meant these. foo :: forall x y. (x -> x) -> y bar :: forall y. (forall x . x -> x) -> y While neither function is seemingly useful, the second says that the higher-order argument must be polymorphic. I see two options: bar id bar undefined The first has these and many more: foo (+1) foo show foo ($) ... Sean
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe