
#13742: Code using ConstraintKinds needs explicit kind signature with GHC 8.2.1 -------------------------------------+------------------------------------- Reporter: albertov | Owner: (none) Type: bug | Status: new Priority: highest | Milestone: Component: Compiler (Type | Version: 8.2.1-rc2 checker) | Keywords: Resolution: | ConstraintKinds, KindSignatures Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): GHC does a very limited form of type-directed name resolution to tell the difference between `(,) :: Type -> Type -> Type` and `(,) :: Constraint -> Constraint -> Constraint`. Type-directed name resolution and type inference hate each other with a passion, so sometimes there's collateral damage in the fight. Bottom line: this design is an infelicity of `ConstraintKinds` in GHC. A fix would be to parameterize `(,)` by a `Constraintiness` parameter, as discussed [https://github.com/ghc-proposals/ghc-proposals/pull/32 here]. Then type inference would be predictable. Short of that solution, I'm not sure what guarantees we can promise. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13742#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler