Infinite context reduction stack overflow
The contrived example below gets a Context reduction stack overflow error no matter how big you make the context reduction stack. I'm not sure whether this constitutes a fixable bug or not.
{-# LANGUAGE FunctionalDependencies, MultiParamTypeClasses #-}
import Control.Monad.State (StateT)
class C1 a b c | a -> b
class C2 a b c
data T b = T
f1 :: (Monad m, C1 a b c) => a -> StateT (T b) m a
f1 f = undefined
f2 :: (Monad m, C1 a1 b1 c1, C2 a2 b2 c2) => a1 -> StateT (T b2) m a2
f2 fm = f1 fm >>= return . undefined
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.0.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |