Haskell中的当前时间

Haskell中的当前时间,haskell,Haskell,我试图创建一个助手函数,它以天的格式给出日期,因此我有以下代码 localDay :: Day localDay = do now <- liftIO $ getCurrentTime utctDay now localDay::Day localDay=do 现在getCurrentTime::IO UTCTime,因此您不能简单地返回Day值;您只能返回一个IO Day值(忽略unsafePerformIO) getCurrentTime::IO UTCTime,因此不能简

我试图创建一个助手函数,它以天的格式给出日期,因此我有以下代码

localDay :: Day
localDay = do 
  now <- liftIO $ getCurrentTime
  utctDay now
localDay::Day
localDay=do

现在
getCurrentTime::IO UTCTime
,因此您不能简单地返回
Day
值;您只能返回一个
IO Day
值(忽略
unsafePerformIO


getCurrentTime::IO UTCTime
,因此不能简单地返回
值;您只能返回一个
IO Day
值(忽略
unsafePerformIO


在这种情况下为什么使用
liftIO
liftIO::MonadIO m=>IO a->ma
用于将一个IO操作提升到另一个能够执行IO的monad中;它不允许您完全退出
IO
monad。在这种情况下为什么要使用
liftIO
liftIO::MonadIO m=>IO a->ma
用于将一个IO操作提升到另一个能够执行IO的monad中;它不允许您完全退出
IO
monad。
Couldn't match type ‘m0 b0’ with ‘Day’
Expected type: m0 UTCTime -> (UTCTime -> m0 b0) -> Day
  Actual type: m0 UTCTime -> (UTCTime -> m0 b0) -> m0 b0
In a stmt of a 'do' block: now <- liftIO $ getCurrentTime
In the expression:
  do { now <- liftIO $ getCurrentTime;
       utctDay now }
In an equation for ‘localDay’:
    localDay
      = do { now <- liftIO $ getCurrentTime;
             utctDay now }
localDay :: IO Day
localDay = fmap utctDay getCurrentTime