
#7869: GHC complains about applying a function to one argument -----------------------------+---------------------------------------------- Reporter: Mortchek | Owner: Type: bug | Status: new Priority: normal | Component: Compiler Version: 7.4.2 | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- When this function is compiled: {{{ let f = (\x -> f x) :: [a] -> b }}} GHC gives this error message: {{{ Foo.hs:1:12: Couldn't match type `b' with `b1' `b' is a rigid type variable bound by the inferred type of f :: [a] -> b at Foo.hs:1:1 `b1' is a rigid type variable bound by an expression type signature: [a1] -> b1 at Foo.hs:1:5 Expected type: [a1] -> b1 Actual type: [a] -> b The function `f' is applied to one argument, but its type `[a] -> b' has only one In the expression: f x In the expression: (\ x -> f x) :: [a] -> b Foo.hs:1:12: Couldn't match type `a' with `a1' `a' is a rigid type variable bound by the inferred type of f :: [a] -> b at Foo.hs:1:1 `a1' is a rigid type variable bound by an expression type signature: [a1] -> b1 at Foo.hs:1:5 Expected type: [a1] -> b1 Actual type: [a] -> b The function `f' is applied to one argument, but its type `[a] -> b' has only one In the expression: f x In the expression: (\ x -> f x) :: [a] -> b }}} The erroneous part is: {{{ The function `f' is applied to one argument, but its type `[a] -> b' has only one In the expression: f x In the expression: (\ x -> f x) :: [a] -> b }}} This error message should not be present, as applying a function to one argument is not a problem. This happens in GHCi as well. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7869 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler