
#13809: TH-reified type family and data family instances have a paucity of kinds -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: 8.8.1 Component: Template Haskell | Version: 8.0.1 Resolution: fixed | Keywords: TypeFamilies Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: 14268 | Blocking: Related Tickets: #8953, #14268 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * status: new => closed * resolution: => fixed * milestone: => 8.8.1 Comment: Now that #14268 is implemented, I claim that this is fixed. That is because when you reify `Foo` now, you get the following information: {{{#!hs FamilyI (DataFamilyD Foo.Foo [KindedTV a_6989586621679015908 StarT] (Just StarT)) [ DataInstD [] Foo.Foo (Just [KindedTV f_6989586621679015938 (AppT (AppT ArrowT (AppT (AppT ArrowT StarT) StarT)) StarT),KindedTV a_6989586621679015939 (AppT (AppT ArrowT StarT) StarT)]) [AppT (VarT f_6989586621679015938) (VarT a_6989586621679015939)] Nothing [] [] , DataInstD [] Foo.Foo (Just [KindedTV f_6989586621679015958 (AppT (AppT ArrowT StarT) StarT),KindedTV a_6989586621679015959 StarT]) [AppT (VarT f_6989586621679015958) (VarT a_6989586621679015959)] Nothing [] [] ] }}} In particular, we now have access to the exact kinds of `f` and `a` in each instance, which lets us properly distinguish them. Hooray! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13809#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler