[Haskell-beginners] Maybe and IO

legajid legajid at free.fr
Sun Dec 27 16:03:23 EST 2009

My purpose is to get data from the keyboard and return a maybe value, 
saying "nothing" if the data entered is invalid.
I get  a message "could'nt match expected IO Integer against inferred 
type maybe integer" on line x<- getdata
Why should x be Maybe ? getdatanum is, but getdata is not.

Is it possible to write only one function rather than 2 distinct ones ?

Thanks for your help,

Here's my code

getdata ::  IO Integer
    let xn=read x ::Integer
    return xn

getdatanum :: Maybe Integer
getdatanum = do
    x <- getdata
    if x < 5
      then do
        return (Just x)
      else do
        return Nothing
    return (Just x)

More information about the Beginners mailing list