#2900: Confusing error message for monadic function with wrong number of
arguments
-----------------------------+----------------------------------------------
Reporter: tim | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler (Type checker)
Version: 6.10.1 | Severity: minor
Keywords: | Testcase:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
-----------------------------+----------------------------------------------
If I compile the following code:
{{{
import Control.Monad.State
foo :: MonadIO m => Int -> m ()
foo x y = return ()
}}}
I get the error message:
{{{
bug.hs:6:10:
Couldn't match expected type `()' against inferred type `m ()'
In the expression: return ()
In the definition of `foo': foo x y = return ()
}}}
On the other hand, if I change foo's type signature to:
{{{
foo :: Int -> IO ()
}}}
I get the more helpful:
{{{
bug.hs:6:0:
The equation(s) for `foo' have two arguments,
but its type `Int -> IO ()' has only one
}}}
It would be good if the second error message appeared in the first case as
well.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2900>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs