January 11, 2010   2 notes,  Comments

“Monads are Trees with Grafting” を訳しました

いろんなところで言いふらしてましたが、もう少しぐぐりやすいところにあった方がいいかなというのと、コンテキストをちょっと書いておいた方がいいだろうと思ったので、ここにも書いておきます。

Monads are Trees with Grafting” はモナド・チュートリアルです。Monad はある法則を満たす木構造へのインターフェースだということを、図やコードで説明しています。

モナド・チュートリアル (Monad Tutorial) とは、Monad とは何なのかを説明する読み物です。モナド・チュートリアルは、日本語で書かれた物も含め大量に存在します。しかし、それらのほとんどには共通する問題があります。何が言いたいのか、書いた当人にしかわからないということです。

この問題は、Brent Yorgey さんの “「モナドはタコスだじぇ!」じゃわかんねーよ” という記事で指摘されていました。そして、Monad を比喩を使って説明することはできないとも言っています。この後 Brent さんは、 “Typeclassopedia” を書きました。 “Typeclassopedia” は、Haskell の基本的な型クラスを一通り解説する文章です。その中で Monad は単に、多くの型クラスのうちの一つとして扱われています。日本語にも訳されています

“Typeclassopedia” は Monad を理解するためによい文章です。Monad を Functor や Applicative などの他の型クラスとの関連から説明しています。しかし、 “Typeclassopedia” はモナド・チュートリアルではありません。あくまではじめの一歩を提示するだけです。Monad とは何か、を書いた当人以外に提示できる文章が存在しないという状況に変わりはありませんでした。

この状況を変えるのが、モナド・チュートリアル “Monads are Trees with Grafting” です。この文章の内容を理解するのに必要なのは、 Haskell の基本(型クラス、無名関数)と、木構造についての知識だけです。つまり、プログラマなら、これを読めば Monad とは何か、がわかります。

なので、Monad を理解したいすべてのプログラマに、このチュートリアルを読むことをお勧めします。また、著者の Dan Piponi さんの他の記事も、理解を助けてくれると思います。

PS: “burrito” と “tacos” の違いがわからなかったので、この記事では “burrito” をタコスと訳しています。

blog comments powered by Disqus
  1. wtakuo reblogged this from nwn
  2. nwn posted this