[Haskell] Problem with types.
Martin Grabmueller
magr at cs.tu-berlin.de
Wed Aug 16 03:41:22 EDT 2006
Szymon Ząbkiewicz wrote:
> Hi!
> I'm new to Haskell and FP so i've got some problems. I wrote this code :
>
> getNr :: Int -> Int
> getNr x = do
> putStrLn ("enter " ++ x ++ " number:")
> nr <- getLine
> return nr
>
> And when I try to load it to GHCi I get an error (there is also plenty
> of others but they look the same):
There are several problems with this code:
1. You are using (++) to concatenate strings and the value x, which
is of type Int. Use 'show' to convert numbers to strings.
2. The result type of getNr is Int, but the body of the function is
a do expression, which is always a monadic value. Since you use
the input/output operations putStrLn and getLine, the type of
the function must be Int -> IO Int
3. The return value of getLine is a string, but you try to return
it from the function, which (see 2) has a return value of IO Int.
Use 'read' to convert the string to an integer value.
HTH,
Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
Url : http://www.haskell.org//pipermail/haskell/attachments/20060816/fd8e8b6f/signature.bin
More information about the Haskell
mailing list