
#10338: GHC Forgets Constraints -------------------------------------+------------------------------------- Reporter: crockeea | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by simonpj): Well all the GHCs I have say {{{ T10338a.hs:27:26: Could not deduce (Unsat c Double) arising from a use of `qux' from the context (C c z, Monad rnd, Num z) bound by the type signature for foo :: (C c z, Monad rnd, Num z) => v -> rnd (c z) at T10338a.hs:26:8-69 }}} And that is totally correct. Every call to `qux` gives rise to a constraint `QCtx t q`. Nothing provides that constraint, certainly not `C c z`. But in fact the instance for `Qux t` says that `QCtx t q` simplifies to `Unsat t q`. And we are stuck. (The call to `qux` also gives rise to a `Qux c` constraint, and that is indeed satisfied from the `C c z` superclass.) I'm at a loss for why you think this program should typecheck. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10338#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler