
#13747: Can't use 'instance' keyword in associated type family instance -------------------------------------+------------------------------------- Reporter: nh2 | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: Incorrect Unknown/Multiple | error/warning at compile-time Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts... #associated-instances The manual on type families says:]
When an associated data or type synonym family instance is declared within a type class instance, we (optionally) may drop the instance keyword in the family instance"
But that doesn't work for me. Using {{{ class Myclass a where type family MyFamily a :: * }}} then the code {{{ instance Myclass Mytype where type instance MyFamily Mytype = Int }}} doesn't compile but {{{ instance Myclass Mytype where type MyFamily Mytype = Int }}} I'd expect to be able to use the `instance` keyword here. I'd prefer this to be treated as an implementation bug instead of a doc bug, because I think it can be useful to be explicit for the ease of reading (and it work works the same way for class declaration, as the example also demonstrates). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13747 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler