HaskellでGoのtimeパッケージの模倣

Haskellで定期実行をしたいと思い,HaskellのスレッドシステムとSTMについて その1 — ありえるえりあとか見ながら書いた.

gist.github.com

先のリンクの記事にもあるようにメインスレッドで待ってやらないと終了するので,chanを使って待たせた.Goのchanと同じ考えで,chanの受信待機するとスレッドが止まると思いこうした.

ところで,GoのtimeパッケージにはAfterTickという関数がある.どちらもchan Timeを返し,これを用いて定期実行を以下のように実行できる.Haskellでも同じことができないかと考えた.

gist.github.com

Haskelltimersパッケージがあるが,こちらはIOを受け取るもののようだ.

参考