
Rafael skrev:
Hi... I give this error using hugs for the code:
--------------------------------------------------- f = foldl (\x y -> add x y) 0 [1,2,3] add x y = return (x + y) --------------------------------------------------- I try:
f = foldl (\x y -> counter x y) (return 0) [1,2,3]
but it dont solve, and with ghci:
" Occurs check: cannot construct the infinite type: b = m b Expected type: b Inferred type: m b In the expression: add x y In a lambda abstraction: \ x y -> add x y
return isn't what you would expect it is if you come from an imperative programming background. It might be a bit early in your haskell journey for this but return is one of the two most important functions in the Monad typeclass and not a language construct as in C and Java. Anyhow, try this definition of "add" instead:
add x y = x + y or for short: add = (+)
Mattias