Skip to content

surprising error message with bang pattern

the following code

f3 :: [Int] -> IO Int  
f3 x = return (sum x) 

f4 :: [Int] -> IO Int  
f4 !x = return (sum x) 

gives The type signature for ‘f4’ lacks an accompanying binding for the second function (the two functions are exactly the same except for the added bang). I do not understand bang patterns well, but would expect a more instructive error message. without the type definition, the second function f4 compiles with the bang).

Trac metadata
Trac field Value
Version 8.0.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system Linux
Architecture x86_64 (amd64)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information