IO monad当前时间

and*_*dro 2 haskell

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

import Data.Time.Clock.POSIX

t = getPOSIXTIME
Run Code Online (Sandbox Code Playgroud)

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

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

Yua*_*ang 6

如果您的其他功能需要POSIXTime,可以将它们包含在do符号中.

最简单的方法就是把它放进去main.假设你的其他功能被命名为f:

import Data.Time.Clock.POSIX

main :: IO ()
main = do
    t <- getPOSIXTIME
    f t
Run Code Online (Sandbox Code Playgroud)

例如

ghc time XXX.hs
./time
Run Code Online (Sandbox Code Playgroud)

t里面的do符号是POSIXTime,不是IO POSIXTime.

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