
#9242: Implement {-# OVERLAPPABLE #-} and {-# INCOHERENT #-} pragmas -------------------------------------+------------------------------------- Reporter: simonpj | Owner: diatchki Type: feature | Status: new request | Milestone: Priority: normal | Version: 7.8.2 Component: Compiler | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by diatchki): As I started implementing this, it occurred to me that another interpretation of `OVERLAPPING` and `OVERLAPPABLE` is also possible: * `OVERLAPPING`: - may replace ''any'' more general instance; - may be replaced by more specific instances marked with `OVERLAPPING`. * `OVERLAPABLE`: - may be replaced by ''any'' more specific instance; - may replace more general instances marked with `OVERLAPABLE`. This interpretation has the advantage of specifying how to interact with "normal" instances (i.e., ones compiled in modules without special overlapping flags). The drawback is that there is no way for an instance to be sure that it won't be replaced. Perhaps that's OK though---I think the current system does not provide a way to do this anyway. See also #3877 for some related discussuion. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9242#comment:15 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler