如果我有以下内容,例如:
import Data.Time.Clock.POSIX
t = getPOSIXTIME
然后是t :: IO POSIXTime。这意味着它在IO monad中,我理解这一点。有没有办法从monad中获取值以用于程序中的其他函数?我不想将值输出到终端。
我为这样一个新手问题道歉,但是我阅读的monad教程越多,我就越不了解它。这基本上是一个关于单子的问题,而不是关于时间的问题。
答案 0 :(得分:6)
如果您的其他函数需要POSIXTime
,则可以将它们包含在do
表示法中。
最简单的方法可能就是把它放在main
中。假设您的其他函数名为f
,那么:
import Data.Time.Clock.POSIX
main :: IO ()
main = do
t <- getPOSIXTIME
f t
e.g。
ghc time XXX.hs
./time
t
表示法中的{p> do
为POSIXTime
,而不是IO POSIXTime
。