Skip to content

QuantifiedConstraints: Can't deduce `xx' from `(xx => a, xx)'

This works with the latest change to the -XQuantifiedConstraints branch.

{-# Language QuantifiedConstraints, FlexibleInstances, MultiParamTypeClasses, AllowAmbiguousTypes, RankNTypes, PolyKinds, ConstraintKinds, UndecidableInstances #-}

class    (forall xx. (xx => a) => Implies xx b) => F a b
instance (forall xx. (xx => a) => Implies xx b) => F a b

class    (a => b) => Implies a b 
instance (a => b) => Implies a b

but replacing Implies xx b with (xx => b) causes it to fail. I don't know if the cause of this overlaps with an existing ticket.

class    (forall xx. (xx => a) => (xx => b)) => F a b
instance (forall xx. (xx => a) => (xx => b)) => F a b

-- $ ghci -ignore-dot-ghci /tmp/ASD.hs 
-- GHCi, version 8.5.20180128: http://www.haskell.org/ghc/  :? for help
-- [1 of 1] Compiling Main             ( /tmp/ASD.hs, interpreted )
-- 
-- /tmp/ASD.hs:4:10: error:
--     • Could not deduce: xx0
--         arising from the superclasses of an instance declaration
--       from the context: forall (xx :: Constraint). (xx => a, xx) => b
--         bound by the instance declaration at /tmp/ASD.hs:4:10-53
--       or from: (xx => a, xx)
--         bound by a quantified context at /tmp/ASD.hs:1:1
--     • In the instance declaration for ‘F a b’
--   |
-- 4 | instance (forall xx. (xx => a) => (xx => b)) => F a b
--   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- Failed, no modules loaded.
-- Prelude> 
Trac metadata
Trac field Value
Version 8.2.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information