getCurrentTime >>= \t -> return $ utcToLocalTime z t
можно заменить отображением функтора:
getCurrentTimeZone >>= \z -> fmap (utcToLocalTime z) getCurrentTime
Мы можем переписать это далее:
utcToLocalTime <$> getCurrentTimeZone <*> getCurrentTime
в localDate
, вы выполняете другой функтор таким образом, мы можем записать это как:
localDate :: IO Day
localDate = localDay <$> <b>(</b>utcToLocalTime <$> getCurrentTimeZone <*> getCurrentTime<b>)</b>
или мы можем объединить два отображения функторов с:
localDate :: IO Day
localDate = <b>(localDay.) . utcToLocalTime</b> <$> getCurrentTimeZone <*> getCurrentTime
Таким образом, получается локальный день:
Prelude Data.Time.Clock Data.Time.LocalTime> (localDay.) . utcToLocalTime <$> getCurrentTimeZone <*> getCurrentTime
2020-04-16