#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

Reply via email to