HaskellでGoのtimeパッケージの模倣
Haskellで定期実行をしたいと思い,HaskellのスレッドシステムとSTMについて その1 — ありえるえりあとか見ながら書いた.
先のリンクの記事にもあるようにメインスレッドで待ってやらないと終了するので,chan
を使って待たせた.Goのchanと同じ考えで,chanの受信待機するとスレッドが止まると思いこうした.
ところで,GoのtimeパッケージにはAfter
とTick
という関数がある.どちらもchan Time
を返し,これを用いて定期実行を以下のように実行できる.Haskellでも同じことができないかと考えた.
Haskellにtimersパッケージがあるが,こちらはIO
を受け取るもののようだ.