2017-01-18 purescript-aff を試した
bouzuya/purescript-examples に aff を追加した。
aff は slamdata/purescript-aff を試したものだ。 purescript-aff パッケージは Aff を提供している。 Aff は asynchronous effect monad 。非同期処理を含む Eff だ。
Aff は ErrorT (ContT Unit (Eff e)) a のようなイメージらしい。 ContT と ErrorT なので JavaScript の Promise に近いのでは……。 Aff を do 記法 (bind) で使うと、 Promise.prototype.then() で繋いでいるような感覚だ。ただ見た目は do 記法のおかげですっきりとしている。
makeAff は callback を使って Aff にできる。new Promise() みたいだ、そればっかりだけど。 liftEff は Eff から Aff に持ち上げることができる。 liftEff $ log s のようなものは頻繁に見かける形だからか、 Control.Monad.Aff.Console モジュールで提供されている。
attempt で Error を Either にしておくと良さそう。せっかくなので投げられる Error を無視するとどうなるのかためしてみたら、普通に Error が throw されて停止した。
軽く触っただけなのだけど、きっとほかで使っていくので、これくらいでいいだろう。