... | ... | @@ -41,4 +41,4 @@ GHC today does this: |
|
|
* uses the liberal (not strict) coverage condition
|
|
|
* lifts the Paterson conditions
|
|
|
|
|
|
* Always: GHC implements liberal instance consistency unconditionally. See `Note [Bogus consistency check]` in `GHC.Tc.Instance.Fundeps`. (GHC presumably does this because SICC is incompatible with LCC. [AntC] Hmm? Because chasing through all the constraints is computationally expensive at compile time; and potentially non-terminating (with `UndecidableInstances`). Also because not possible with separate compilation: instances in non-visible modules. Hugs supports LCC but does impose SICC (but doesn't support separate compilation); and indeed chases through instance constraints and superclass constraints/instances; and sometimes just gives up with a message to the effect 'this is too hard' -- or of course a stack depth check.) |
|
|
* Always: GHC implements liberal instance consistency unconditionally. See `Note [Bogus consistency check]` in `GHC.Tc.Instance.Fundeps`. (GHC presumably does this because SICC is incompatible with LCC. [AntC] Hmm? Because chasing through all the constraints is computationally expensive at compile time; and potentially non-terminating (with `UndecidableInstances`). Also because not possible with separate compilation: instances in non-visible modules. Hugs supports LCC but does impose SICC (but doesn't support separate compilation); and indeed chases through instance constraints and superclass constraints/instances -- so rejects the ['simpler example' here](https://gitlab.haskell.org/ghc/ghc/-/wikis/Functional-dependencies-in-GHC/Key-examples#example-3-lcc-and-licc-threaten-confluence) that relies on LCC; and sometimes just gives up with a message to the effect 'this is too hard' -- or of course a stack depth check.) |