[GHC] #1406: Constraint doesn't reduce in the presence of quantified type variables

GHC trac at galois.com
Fri Jun 1 22:04:02 EDT 2007


#1406: Constraint doesn't reduce in the presence of quantified type variables
--------------------------------------+-------------------------------------
  Reporter:  ccshan                   |          Owner:         
      Type:  bug                      |         Status:  new    
  Priority:  normal                   |      Milestone:         
 Component:  Compiler (Type checker)  |        Version:  6.6.1  
  Severity:  normal                   |       Keywords:         
Difficulty:  Unknown                  |             Os:  Unknown
  Testcase:                           |   Architecture:  x86    
--------------------------------------+-------------------------------------
{{{
 {-# 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.
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1406>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
-------------- next part --------------
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs at haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs


More information about the Glasgow-haskell-bugs mailing list