
Mateusz Lenik schreef op 10-5-2014 17:01:
Hi,
There are several issues with the code:
- type annotation states that the function returns 'IO ()', while on the else branch 'IO Int' is returned. To fix it you should either change the returned type to 'IO Int' or replace 'return n' with 'return ()'; - in do notation you have to use let syntax, so 'x n = n * n' should be 'let x n = n * n'; - this brings us to another issue in line 'putStrLn (show x n)', which is equivalent to 'putStrLn ((show x) n)'. You should put parentheses explicitly to fix it, or change x definition to 'let x = n * n', so that you can just write 'putStrLn (show x)'.
Cheers! Mateusz
Is it valid Haskell if I change the putStrln to putStrln ( show n * n) so I do not have to use the let command. Another question if I change return n with return () does the loop ever end. My feeling says not because the value of n is never updated for the loop. Roelof