如何在 Haskell 中休眠或延迟线程?

How to sleep or delay the thread in Haskell?

这真的不应该那么难找到答案,但可惜我不......我想延迟 do 块中的下一个执行步骤。我找到了功能 delay, sleep, nanosleepusleep.

还有这个问题,它不包括如何使用这些,但是:Sleep in Haskell

所有这些我都遇到了同样的错误,所以我可能从根本上做错了什么:

Variable not in scope: delay :: Integer -> IO a0

这是我的测试片段:

main = do
  {
    putStrLn "line 1"
  ; delay 2
  ; putStrLn "line 2"
  }

出于某种原因,谷歌搜索错误实际上并没有产生任何有用的信息。

嗯,你必须先导入Control.Concurrent

import Control.Concurrent

threadDelay 1000000 --sleep for a million microseconds, or one second