Hi,

On Mon, 3 Nov 2003, Karthik Kumar wrote:
> -- Convert a string to an integer.
> -- This works perfectly fine. 
> atoi          :: [Char] -> Int
> atoi (h : []) = if isDigit h then digitToInt h else 0
> atoi (h : t) =  if isDigit h then digitToInt h * ( 10 ^ length t) +
> atoi t else 0

you can use "read" for this.

> -- validateBoardSize
> -- To validate the board size
> validateBoardSize   :: Int -> Bool
> validateBoardSize d = (d == 9 || d == 13 || d == 19 ) 

this looks fine

> getBoardSize :: IO Bool 
> -- TODO : What could be the type of getBoardSize 
> getBoardSize  = do c <- getLine
>                    validateBoardSize ( atoi c ) 
> 
> ERROR "test1.hs":21 - Type error in final generator
> *** Term           : validateBoardSize (atoi c)
> *** Type           : Bool
> *** Does not match : IO a

this is telling you something important.  it's saying that the final 
generator, "validateBoardSize (atoi c)" has type Bool, but it's expecting 
it to have type IO something.  You need to "lift" the pure Bool value into  
IO by saying return:

> getBoardSize = do
>    c <- getLine
>    return (validateBoardSize (read c))

-- 
 Hal Daume III                                   | [EMAIL PROTECTED]
 "Arrest this man, he talks in maths."           | www.isi.edu/~hdaume

_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to