blog.bouzuya.net

2017-01-18 purescript-aff を試した

bouzuya/purescript-examples に aff を追加した。

aff は slamdata/purescript-aff を試したものだ。 purescript-aff パッケージは Aff を提供している。 Aff は asynchronous effect monad 。非同期処理を含む Eff だ。

AffErrorT (ContT Unit (Eff e)) a のようなイメージらしい。 ContTErrorT なので JavaScript の Promise に近いのでは……。 Affdo 記法 (bind) で使うと、 Promise.prototype.then() で繋いでいるような感覚だ。ただ見た目は do 記法のおかげですっきりとしている。

makeAff は callback を使って Aff にできる。new Promise() みたいだ、そればっかりだけど。 liftEffEff から Aff に持ち上げることができる。 liftEff $ log s のようなものは頻繁に見かける形だからか、 Control.Monad.Aff.Console モジュールで提供されている。

attemptErrorEither にしておくと良さそう。せっかくなので投げられる Error を無視するとどうなるのかためしてみたら、普通に Errorthrow されて停止した。

軽く触っただけなのだけど、きっとほかで使っていくので、これくらいでいいだろう。