id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
1406	Constraint doesn't reduce in the presence of quantified type variables	ccshan		"{{{
{-# OPTIONS -fglasgow-exts #-}
{-# OPTIONS -fallow-undecidable-instances #-}

module Problem where

data Z
data S a

class HPrefix l
instance (NSub (S Z) ndiff, HDrop ndiff l l) => HPrefix l

class NSub n1 n3 | n1 -> n3
instance NSub Z Z
instance NSub n1 n3 => NSub (S n1) n3

class HDrop n l1 l2 | n l1 -> l2
instance HDrop Z l l

t_hPrefix :: HPrefix l => l -> ()
t_hPrefix = undefined

-- This works...
thr' :: (forall r. l -> a) -> a
thr' f = f undefined
thP4' = thr' t_hPrefix

-- ... but this doesn't work...?
thr :: (forall r. r -> a) -> a
thr f = f undefined
thP4 = thr t_hPrefix
}}}
{{{
$ ghci GHCProblem.hs 
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Problem          ( GHCProblem.hs, interpreted )

GHCProblem.hs:30:11:
    No instance for (HDrop ndiff r r)
      arising from use of `t_hPrefix' at GHCProblem.hs:30:11-19
    Possible fix:
      add (HDrop ndiff r r) to the expected type of an expression
    In the first argument of `thr', namely `t_hPrefix'
    In the expression: thr t_hPrefix
    In the definition of `thP4': thP4 = thr t_hPrefix
Failed, modules loaded: none.
}}}"	bug	closed	normal		Compiler (Type checker)	6.6.1	fixed			Unknown/Multiple	x86		Unknown	tc229			
