
#7880: Require "forall" in definitions of polymorphic types ---------------------------------+------------------------------------------ Reporter: monoidal | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Keywords: | Os: Unknown/Multiple Architecture: Unknown/Multiple | Failure: GHC accepts invalid program Difficulty: Unknown | Testcase: Blockedby: | Blocking: Related: | ---------------------------------+------------------------------------------ Comment(by simonpj): I have some sympathy with this, but what about {{{ f :: (Num a => a -> a) -> Int }}} Which of these does it mean? {{{ f :: (forall a. Num a => a -> a) -> Int f :: forall a. (Num a => a -> a) -> Int }}} Your proposal is (in effect) that "=>" does not trigger an implicit "forall"; only the top level of a type does that. I think that's probably very sensible, but it's a breaking change, and I don't know how much code, if any, would break. Simon -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7880#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler