I think the confusion for me is that I've trained myself to think of `forall` as explicitly introducing an implicit argument, and `->` as introducing an explicit argument. So the syntax `forall a ->` looks to me like a contradiction.
On Thu, Dec 3, 2020, at 10:56, Richard Eisenberg wrote: > > > > On Dec 3, 2020, at 10:23 AM, Bryan Richter <b...@chreekat.net> wrote: > > > > Consider `forall a -> a -> a`. There's still an implicit universal > > quantification that is assumed, right? > > No, there isn't, and I think this is the central point of confusion. A > function of type `forall a -> a -> a` does work for all types `a`. So I > think the keyword is appropriate. The only difference is that we must > state what `a` is explicitly. I thus respectfully disagree with > > > But somewhere, an author decided to reuse the same keyword to herald > a type argument. It seems they stopped thinking about the meaning of > the word itself, saw that it was syntactically in the right spot, and > borrowed it to mean something else. > Does this help clarify? And if it does, is there a place you can direct > us to where the point could be made more clearly? I think you're far > from the only one who has tripped here. > > Richard > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs