Commit c9d1b379 authored by Simon Peyton Jones's avatar Simon Peyton Jones
Browse files

Test Trac #5300

parent 6da03439
{-# LANGUAGE FunctionalDependencies, MultiParamTypeClasses #-}
module T5300 where
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
Ambiguous type variable `c0' in the constraint:
(C1 a1 b2 c0) arising from a use of `f1'
Probable fix: add a type signature that fixes these type variable(s)
In the first argument of `(>>=)', namely `f1 fm'
In the expression: f1 fm >>= return . undefined
In an equation for `f2': f2 fm = f1 fm >>= return . undefined
......@@ -242,3 +242,4 @@ test('FailDueToGivenOverlapping', normal, compile_fail, [''])
test('LongWayOverlapping', normal, compile_fail, [''])
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment