import Control.Concurrent (threadDelay)
import System.IO.Unsafe (unsafePerformIO)

sleep t =
    do
      threadDelay $ truncate tt
      return tt
        where tt = (1000000.0 * t)

sleepPure = unsafePerformIO . sleep


test1 = mapM (\n -> time (sleepPure n)) [1.0,2.0,3.0]
test2 = mapM (\f -> time (map f [1.0,2.0,3.0])) [sleepPure, sleepPure . (/2.0)]
