wvogel日記

自分用の技術備忘録が多めです.

delay

Haskellでの時間待ち、waitはどのようにしたらよいのでしょうか。
クイックソートの時間比較の際に使った、
正格評価関数

($!)::(a->b)->a->b

を使って何か意味のない計算をさせて遅延させることも可能ですが、
スマートではないですね。

threadDelayという関数が用意されています。

threadDelay::Int->IO()

数を受け取り、その時間分(micro秒)だけスレッドを待機させる機能です。
Hoogleの説明によると、
この関数で指定したスレッドの遅延が満了しても
即座に再開される保証はないようですが、
指定したmicro秒より早く開始されることもないそうです。
詳しい仕様まではわからないのでなるほどと思うしかないですが、普通に使う分にはこれで十分事足りそうです。