用戶給出:年,月,日,小時和分鐘,我想使用這些值返回CalendarTime值。我該怎麼做 - 因爲我有錯誤:'無法匹配預期類型IO CalendarTime與推斷類型Int'。函數getDateTime有什麼錯誤?返回日曆時間值
命題:所有的值都是正確的,例如月份是從1-12範圍內等等 - 我從下面的代碼刪除驗證,否則代碼會太長。
isInteger i = not (null i) && all isDigit i
getInteger :: String -> IO Int
getInteger q = do
putStr q;
i <- getLine
if isInteger i == False then do
putStrLn "Bad number"
getInt q
else return (read i)
getDateTime :: String -> IO CalendarTime
getDateTime question = do
putStr question;
year <- getInteger "Year: "
month <- getInteger "Month: "
day <- getInteger "Day: "
hour <- getInteger "Hour: "
minute <- getInteger "Minute: "
return CalendarTime(year month day hour minute 0)
風格點:不要說「if foo == False then ....」;說「如果不是,那麼......」。在這種情況下,它將是「如果不是$ isInteger然後...」 – 2011-04-20 16:21:34