エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
より自由なFreerモナドをSchemeに - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
より自由なFreerモナドをSchemeに - Qiita
data Freer f a where Pure :: a -> Freer f a Impure :: f x -> (x -> Freer f a) -> Freer f a instan... data Freer f a where Pure :: a -> Freer f a Impure :: f x -> (x -> Freer f a) -> Freer f a instance Monad (Freer f a) where return = Pure Pure x >>= k = k x Impure fx k' >>= k = Impure fx (k' >>> k) Pure に関しては Free と同じだが、 Impure の方は f x の値とそれを使う計算(継続)を合わせて持ち回り、 >>= で値を計算するのではなく継続を組み立てるようにしている。 >>> は Category クラスにおける射の合成で、ここでは Kleisli 射を合成して k' をした後に k をする計算を作っている。 先述の通り、この定義は Operational モナドと同一だが、