
#12102: “Constraints in kinds” illegal family application in instance (+ documentation issues?) -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by Iceland_jack): I think I found a solution for this particular case, using `TypeFamilyDependencies`, if we make a restricted code {{{#!hs data Code = NAT | SYMBOL }}} with an injective interpretation {{{#!hs type family Interp (a :: Code) = (res :: Type) | res -> a where Interp NAT = Nat Interp SYMBOL = Symbol }}} then you can write {{{#!hs data T :: forall a. Interp a -> Type where MkNat :: T 42 MkSymbol :: T "Don't panic!" deriving instance Show (T a) deriving instance Eq (T a) deriving instance Ord (T a) -- deriving instance Read (T a) }}} but using any of those methods causes the error in #13643 :) once that ticket is created -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12102#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler