タグ

from_plaggerとmonadに関するkshimo69のブックマーク (2)

  • モナドを実装する(Python編) | Webシステム開発/教育ソリューションのタイムインターメディア

    発端 モナドの正体が分かると、 次はモナドを実装してみたくなるものです。 という訳で試しに Python でモナドを実装してみましょう。 別にどんな言語でも構わないのですが、 クロージャや部分適用が簡単に使えない言語では質的でないところで苦労する羽目になるので、 今回は Python を使うことにしました。 なお、今回作成した Python によるモナドの実装は GitHub で公開中です。 方針 モナドの具体例で一番簡単なものは Maybe でしょう。 まずは Maybe を Python のクラスとして実装して、 そこから一般的なところを括りだして Monad クラスを作ることにしましょう。 モナドの構成要素は以下の3つです: 普通の値をモナドにラップするための型 m普通の値を m にラップするための関数 returnモナドでラップされた普通の値を取り出して処理を行う演算子 >>=

    モナドを実装する(Python編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • モナドで悟りをひらきたいのなら - 図でわかる(?)モナド - Pixel Pedals of Tomakomai

    圏論の最大の武器はダイアグラムなので、モナドで悟りをひらきたいのならダイアグラムを使えばいいんじゃないでしょうか。 ダイアグラムの書き方 例えば、「 f :: a -> b 」とか「length :: [a] -> Int」は以下のように書きます。型を点で、関数を矢印で書きます。 ダイアグラムの利点は、fやlengthの中身を忘れて簡略化することができることです。人間の脳ができることには限りがあるので、注目する情報が少ない方が理解しやすくなるってスンポーです。 なお、 合成 g . f は図示する時に順が逆になるので気をつけて下さい。これは、合成関数の適用が g ( f x ) と書けることに由来してます。まずfを適用し、次にgを適用するということです。 return と >>= の図示 今回のダイアグラムの約束として、元となる型(Bool, Char, Int 等)は最下段に書きます。そ

    モナドで悟りをひらきたいのなら - 図でわかる(?)モナド - Pixel Pedals of Tomakomai
  • 1