[GHC] #9123: Need for higher kinded roles
GHC
ghc-devs at haskell.org
Thu Mar 1 23:56:39 UTC 2018
#9123: Need for higher kinded roles
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: goldfire
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 7.8.2
checker) | Keywords: Roles,
Resolution: | QuantifiedConstraints
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Superclasses now working, I think, in `wip/T2893`:
{{{
commit 910dfcfeadc4f132e887bc4adf5ac2e17a29d99b
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Thu Mar 1 23:32:29 2018 +0000
Add superclasses to quantified constraints
This patch adds suppport for superclasses to quantified constraints.
For example (contrived):
f :: (forall a. Ord a => Ord (m a)) => m a -> m a -> Bool
f x y = x==y
Here we need (Eq (m a)); but the quantifed constraint deals only
with Ord. But we can make it work by using its superclass.
This behaviour finally delivers on the promise of comment:30 of
Trac #9123: we can write an implication constraint that solves
the problem of higher-kinded roles. Test
quantified-constraints/T8123 demonstrates this in action.
compiler/basicTypes/Id.hs | 2 +-
compiler/typecheck/Inst.hs | 4 +-
compiler/typecheck/TcCanonical.hs | 180
++++++++++++++---------
compiler/typecheck/TcErrors.hs | 4 +-
compiler/typecheck/TcEvTerm.hs | 5 +-
compiler/typecheck/TcEvidence.hs | 74 ++++++----
compiler/typecheck/TcHsSyn.hs | 23 ++-
compiler/typecheck/TcInstDcls.hs | 2 +-
compiler/typecheck/TcInteract.hs | 61 ++++----
compiler/typecheck/TcMType.hs | 6 +-
compiler/typecheck/TcPatSyn.hs | 7 +-
compiler/typecheck/TcPluginM.hs | 2 +-
compiler/typecheck/TcRnTypes.hs | 62 ++++++--
compiler/typecheck/TcSMonad.hs | 119 +++++++--------
compiler/typecheck/TcSimplify.hs | 2 +-
compiler/typecheck/TcType.hs | 2 +-
compiler/types/Class.hs | 54 ++++---
compiler/types/Kind.hs | 2 +
testsuite/tests/quantified-constraints/T2893b.hs | 24 ---
testsuite/tests/quantified-constraints/T2893c.hs | 15 ++
testsuite/tests/quantified-constraints/T9123.hs | 24 +++
testsuite/tests/quantified-constraints/T9123a.hs | 26 ++++
testsuite/tests/quantified-constraints/all.T | 5 +
23 files changed, 426 insertions(+), 279 deletions(-)
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9123#comment:47>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list