
#16110: Explicit foralls in associated type family defaults are completely ignored? -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC accepts | Unknown/Multiple invalid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Slightly tangential question: why do type family defaults need type variable binders in the first place? After all, the arguments in a type family default must always be type variables anyway—if you try otherwise: {{{#!hs class C a where type T a type T Int = Int }}} Then GHC will just reject it: {{{ Unexpected type ‘Int’ In the default declaration for ‘T’ A default declaration should have form default T a = ... }}} (That error message is a bit skeevy, since you're not supposed to put the word "`default`" at the front like that. But that's a separate issue.) Given that type family default arguments are required to be all type variables anyway, does it really benefit us to have an explicit `forall` to bind them? (We don't do this for data, class, or type family declarations, for instance.) Or am I missing something obvious? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16110#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler