Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to sleep or delay the thread in Haskell?

This really shouldn't be so difficult to find an answer to, but alas I don't... I want to delay the next execution step in a do block. I have found the functions delay, sleep, nanosleep and usleep.

And also this question, that doesn't cover how to use any of these, however: Sleep in Haskell.

I am getting the same error for all of these, so probably I am doing something wrong fundamentally:

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

This is my test snippet:

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

Googling the error does not actually yield anything useful for some reason.

like image 282
lo tolmencre Avatar asked Dec 14 '17 14:12

lo tolmencre


1 Answers

Well, you have to import Control.Concurrent first:

import Control.Concurrent

threadDelay 1000000 --sleep for a million microseconds, or one second
like image 175
ForceBru Avatar answered Oct 12 '22 12:10

ForceBru