
#11400: * is not an indexed type family -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.1 checker) | Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): This whole thing is very much a design compromise. It would be fully backward compatible simply to disallow `*` in `TypeInType` code, in favor of `Type`. Of course it's backward compatible, as `TypeInType` is new. But it has a terrible migration story, because you can't use `Type` for `*` in GHC 7.x. So I did a bit of parser hackery to get this to hold together. But it really only works when parsing a normal type. Other places where types appear in unusual situations don't work out so well. (For example, type instance heads and Haskell98 data constructors.) Could this be fixed? I'm sure it could, but it's quite painful each time. I'm quite happy to change designs around this issue. Or for someone to do more parser hackery to get `*` to work in more contexts. This ticket has the same fix as #11307, which is to have new abstract syntax for type instance heads. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11400#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler