title: Why is it possible to sleep / pause execution in Haskell if it's purely functional?
body: <p>I saw Haskell has a sleep function called "delay": <a href="http://hackage.haskell.org/package/concurrent-extra-0.5/docs/Control-Concurrent-Thread-Delay.html">Control.Concurrent.Thread.Delay</a></p>
  
  <p>My question is: if Haskell is <em>purely</em> functional, how is it possible to have such thing like this? Isn't sleep a collateral effect or am I missing something?</p>