
#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): I wonder: will we need to change some Template Haskell conventions to support this change? Currently, this: {{{#!hs [d| class C a where type T a type T a = a |] }}} Turns into this: {{{#!hs [ ClassD [] C_6989586621679039759 [ PlainTV a_6989586621679039761 ] [] [ OpenTypeFamilyD (TypeFamilyHead T_6989586621679039760 [ PlainTV a_6989586621679039761 ] NoSig Nothing) , TySynInstD (TySynEqn Nothing (AppT (ConT T_6989586621679039760) (VarT a_6989586621679039762)) (VarT a_6989586621679039762)) ] ] }}} Notice that we're using a `TySynInstD`/`TySynEqn` to represent the type family default, complete with a `Nothing` for its type variable binders. If we pursue the line of thought in this ticket, wouldn't that suggest that we should be using something else to represent this default? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16110#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler