※ 本記事はextensible-effectsパッケージではなくextensibleパッケージの Data.Extensible.Effectモジュールについての記事です 解答 context :: ( Associate "greet" (WriterEff [String]) xs , Associate "message" (WriterEff [String]) xs ) => Eff xs ()
extensibleは拡張可能レコードだけでなく拡張可能作用(extensible effects)も用意している。拡張可能作用は一時期Haskell界隈で話題になったものの、今では人気も下火になってしまった。新しいバージョンをリリースした今、拡張可能作用の動機と使い方について改めて紹介しよう。 難行の一次関数 Haskellでモナドをカスタマイズする方法としては、transformersのモナド変換子がよく使われている。モナド変換子は、モナドをパラメータとして取り、新たな能力を付与したモナドにする構造だ。例えば、StateT sはモナド変換子の一つである。任意のアクションm aはliftを使ってStateT s m aに変換できる。 newtype StateT s m a = StateT { runStateT :: s -> m (a, s) } 他にもReaderT, Write
As of March 2020, School of Haskell has been switched to read-only mode. An operational monad is a data type parameterised by a set of operations t, and it gives a Monad instance for free. It upgrades extensible sums, aka. open unions, into an extensible effect monad (Oleg Kiselyov and Hiromi Ishii. Freer Monads, More Extensible Effects, 2015). Extensible effects release you from the obligation to
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く