
Replying to [comment:3 goldfire]:
To paraphrase, you want GHC to recognize that an empty closed type family is insoluble.
Note that empty closed type families are not necessarily insoluble in
#11594: closed empty type families fully applied get reduced lazily when in a constraint tuple and fully applied -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: feature request | Status: new Priority: normal | Milestone: 8.0.1 Component: Compiler (Type | Version: 7.10.2 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #9636 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by carter): So if I wanted a new userland insolvable type family that errors out eagerly rather than down stream, I'd have to have a type solver plugin active in the defining module to enforce that? I guess that would enable simulating the type error family in userland In 7.10 right? I guess my main worry is that afaict, any type solver plugin usage forces ghc to rebuild The offending module every time. And then every down stream user possibly too! Or am I mis understanding your point? What if instead, when defining an empty closed type family, we could pragma Annotate it with "requires plugin foo" when we want this other plugin adhuncated semantics, Because otherwise requiring the offending type plugin is implicit in any down stream module! Replying to [comment:5 adamgundry]: the presence of type-checker plugins. Indeed, the whole point of adding empty CTFs was to allow them to be given special reduction behaviour by plugins. So I think the implementation should be left alone (but for some contrasting views see the discussion on #9636).
Documentation improvements are welcome, of course. :-)
-- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11594#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler