diff options
author | Richard Eisenberg <rae@richarde.dev> | 2020-03-17 15:22:31 +0000 |
---|---|---|
committer | Richard Eisenberg <rae@richarde.dev> | 2020-03-17 15:23:59 +0000 |
commit | ac8b535c9c66cb018d4c535f6977c8033a9d66b6 (patch) | |
tree | 1ea00c8a57f1e4684afd4bc47569bba2f9a9ff50 | |
parent | 75168d07c9c30289709423fc184bbab8dcad0f4e (diff) | |
download | haskell-wip/t16502-note.tar.gz |
Add release note about fix to #16502.wip/t16502-note
We thought we needed to update the manual, but the fix for #16502
actually brings the implementation in line with the manual. So we
just alert users of how to update their code.
-rw-r--r-- | docs/users_guide/8.12.1-notes.rst | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/users_guide/8.12.1-notes.rst b/docs/users_guide/8.12.1-notes.rst index eecd7570fc..75adb1fb41 100644 --- a/docs/users_guide/8.12.1-notes.rst +++ b/docs/users_guide/8.12.1-notes.rst @@ -24,6 +24,23 @@ Language would have accepted ``x``, but its type would have involved the mysterious ``Any`` internal type family. Now, GHC rejects, explaining the situation. +* GHC now more faithfully implements the instance-lookup scheme described with + :extension:`QuantifiedConstraints`. Previous bugs meant that programs like this + were accepted:: + + data T (c :: Type -> Constraint) + instance (forall h. c h => Functor h) => Functor (T c) + instance (forall h. c h => Applicative h) => Applicative (T c) + + Note that in the instance declaration for ``Applicative (T c)``, we cannot prove + ``Functor (T c)``, because the quantified constraint shadows the global instance. + There is an easy workaround, though: just include ``Functor (T c)`` as an assumption. :: + + instance (forall h. c h => Applicative h, Functor (T c)) => Applicative (T c) + + There is a chance we will tweak the lookup scheme in the future, to make this + workaround unnecessary. + Compiler ~~~~~~~~ |