- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
t = 40000 -- количество итераций, чтобы выполнялось примерно 1 миллисекунду
-- экспериментальным путем определено, что для ideone'вских машин это значение ~40000
sleep x = (apply (t*x) id x) `seq`
("I've waited ~" ++ show x ++ " milliseconds to tell this: 'pipisiunchik'.")
-- apply применяет ф-цию f к x n раз
apply 0 _ !x = x
apply !n !f !x = apply (n - 1) f (f x)
main = putStrLn $ sleep 1000
Спешу представить вам плод моего безделья: чистая ф-ция sleep на Haskell!
Тесты:
1sec - http://ideone.com/sLxRx
3.5sec - http://ideone.com/vn4Fd
10sec - http://ideone.com/U8s36
Или это вынужденно на практике используется?
Нет конечно, это просто мне делать нечего было.