Разобрать строку ввода пользователя в типе Day и вычесть две даты в Haskell - PullRequest
0 голосов
/ 12 ноября 2018

Я новичок в Хаскеле и мне нужна помощь. Я хотел бы создать функцию, которая принимает ввод пользователя в формате yyyy, mm, dd и преобразовывает его в тип Day, чтобы использовать diffDays.

Вот что я пробовал:

today :: IO (Integer, Int, Int)
today = getCurrentTime >>= return . toGregorian . utctDay

getDiffDays' :: IO Integer
getDiffDays' = do
     putStr "What is your birthdate (year, month, day)?: "
     dateOfBirth <- getLine
     let dob = read dateOfBirth :: Day
     return diffDays today dob

1 Ответ

0 голосов
/ 12 ноября 2018

Я думаю, что вы хотите что-то ниже,

import Data.Time.Calender
import Data.List (intercalate)

replace :: String -> String
replace src = intercalate "-" $ words $ filter (/= ',') src

main :: IO ()
main = do
  -- Example input: 2018, 11, 12
  dayString <- getLine
  let day = read (replace dayString) :: Day
  -- Example output: 2018-11-12
  print day

проблема была в том, что Day ожидают чтения в формате YYYY-MM-DD, но YYYY, MM, DD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...