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.