如果我有以下内容,例如:
import Data.Time.Clock.POSIX
t = getPOSIXTIME
Run Code Online (Sandbox Code Playgroud)
然后是t :: IO POSIXTime.这意味着它在IO monad中,我理解这一点.有没有办法从monad中获取值以用于程序中的其他函数?我不想将值输出到终端.
我为这样一个新手问题道歉,但是我阅读的monad教程越多,我就越不了解它.这基本上是关于单子的问题,而不是具体的时间问题.
如果您的其他功能需要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