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
されて停止した。
軽く触っただけなのだけど、きっとほかで使っていくので、これくらいでいいだろう。