この記事はScalaz Advent Calendarの13日目の記事です。
Codensityについてググると、
The Mother of all Monads
という記事が見つかる。
Codensityは継続モナドとほぼ同じものみたい。
この記事にある例をScalaで書いてみる。
Option
Disjunction
なるほど。
CodensityがOptionやDisjunctionとして動く。
でもこれってIdTじゃ(ry
Codensityは継続モナドのようなもの、ということで継続らしい例を書いてみる。
iprintで、計算の経過を表示する。
Some(bar)とNoneが表示される。
継続を破棄するbreakを定義し、for式で使ってみる。
Some(bar)だけが表示される。
無事、計算が破棄された。
Codensityはあるモナドにおいて計算量を減らせることがわかった。
他にも何か出来そうだが、わたしが思いついたのはこれくらい。
0 件のコメント:
コメントを投稿