Haskell 不能';t匹配类型‘;也许’;与‘;IO’;
这是我的职责Haskell 不能';t匹配类型‘;也许’;与‘;IO’;,haskell,Haskell,这是我的职责 getDateFromUser :: IO (Either UserError Day) getDateFromUser = do Prelude.putStrLn "Пожалуйста, укажите дату для прогноза в формате ГГГГ-ММ-ДД:" currentTime <- getCurrentTime date <- Prelude.getLine let retrievedDate = utctDay cu
getDateFromUser :: IO (Either UserError Day)
getDateFromUser = do
Prelude.putStrLn "Пожалуйста, укажите дату для прогноза в формате ГГГГ-ММ-ДД:"
currentTime <- getCurrentTime
date <- Prelude.getLine
let retrievedDate = utctDay currentTime
dayFromUser = parseTimeM True defaultTimeLocale "%Y-%-m-%-d" date :: Maybe Day
case dayFromUser of
Nothing -> Nothing
Just validDay -> do
let differenceInDays = diffDays validDay retrievedDate
if differenceInDays >= 0 && differenceInDays <= 16
then return $ Right validDay
else return $ Left InvalidDate
getDateFromUser::IO(用户错误日期)
getDateFromUser=do
前奏曲“Пжжжжжжжжжзззззафажжжжжажа1078
当前时间
让DifferenceDays=DifferDays validDay RetrieveDate
如果differenceInDays>=0&&differenceInDays则罪魁祸首是Nothing->Nothing
,其中第一个Nothing
是可能日
,第二个是可能日(用户错误日)
你想要
Nothing -> return $ Left InvalidDate
(或其他一些UserError
)。您在第9行忘记了返回值