Функция Haskell для получения части даты в виде строки

У меня возникнет вопрос для начинающих о датах и ​​ String в Haskell.

Мне нужно получить часть даты (год , месяц или день) как String в Haskell. Я обнаружил, что если я напишу следующие две строки в GHCi

Prelude> now <- getCurrentTime
Prelude> let mon = formatTime defaultTimeLocale "%B" now

, то mon будет иметь тип String . Однако я не могу поместить это в функцию. Я пробовал, например, следующее:

getCurrMonth = do
    now <- getCurrentTime
    putStrLn (formatTime defaultTimeLocale "%B" now)

Но это возвращает тип IO () , и мне нужна String (также не IO String , только String ).

Я понимаю, что оператор do создает монаду, которая мне не нужна, но я не смог найти другого решения для получения даты в Haskell.

Итак, есть ли способ написать такую ​​функцию?

Заранее благодарим за любую помощь!

6
задан Dan Burton 7 April 2011 в 04:43
поделиться