Doubt regarding Types

Karthik Kumar kaykaydreamz at yahoo.com
Mon Nov 3 19:57:19 EST 2003


Thanks a ton Hal for the quick clarification. It worked . 

Cheers
Karthik. 

--- Hal Daume III <hdaume at ISI.EDU> wrote:
> 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                                   | hdaume at isi.edu
>  "Arrest this man, he talks in maths."           |
> www.isi.edu/~hdaume
> 


__________________________________
Do you Yahoo!?
Exclusive Video Premiere - Britney Spears
http://launch.yahoo.com/promos/britneyspears/


More information about the Haskell-Cafe mailing list