Hm, yes, I might share Eric's intuition.
I think I'm starting to get it, though. It originally sounded to me like "forall a ->" was being introduced as a new syntax for function arguments. In fact, it is a new syntax for quantification -- one that happens to borrow the syntax for function application. And well it might, because the sort of quantification it introduces is one that requires passing the name of a type to the function! Den tors 3 dec. 2020 18:39Eric Seidel <e...@seidel.io> skrev: > 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 >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs