
#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 simonpj): Am I correct in believing that this change was part of implementing the [https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0007 -instance-foralls.rst explicit foralls GHC proposal]? (Incidentally, this proposal is not listed as "implemented" in [https://github.com/ghc-proposals/ghc- proposals/pulls?page=2&q=label%3AAcceptedthe main list]. Should it be?) The proposal is silent on whether it applies to default family instance decls. It'd be good to update the proposal to be clear on this point, since it is teh only specification we have. If the goal is to be able to explicitly bind every variable, would we need a forall for a default family instance? {{{ class C a where type T a b :: * type T a b = (a, [b]) }} Does the default instance need to replicate the type family signature? Eg can I say this? {{{ class C a where type T a b :: * type T x y = (x, [y]) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16110#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler