IO monad当前时间

时间:2014-12-23 23:11:00

标签: haskell

如果我有以下内容,例如:

import Data.Time.Clock.POSIX

t = getPOSIXTIME

然后是t :: IO POSIXTime。这意味着它在IO monad中,我理解这一点。有没有办法从monad中获取值以用于程序中的其他函数?我不想将值输出到终端。

我为这样一个新手问题道歉,但是我阅读的monad教程越多,我就越不了解它。这基本上是一个关于单子的问题,而不是关于时间的问题。

1 个答案:

答案 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> doPOSIXTime,而不是IO POSIXTime

http://en.wikibooks.org/wiki/Haskell/do_Notation