MTLを使うための資料を整理しました。
集めた資料を見てみると、まずは、モナド、モナドトランスフォーマーをよく理解して、ライブラリの各モナドを一つ一つ使えるようにするという流れがよさそうです。
モナドトランスフォーマーの記事を探すと、モナド自体はわかっている前提の記事が多いので、モナドになれていない場合は、モナドからやった方がいいと思います。
モナドは、実装だけを考えると、単なる型クラスにすぎません。Haskellの実装上は、モナド則を満たしてなくても使用できます。
まずは、モナドクラスの仕様をみて、実際にいくつかサンプルを作ってみてから、モナド則をみるといいと思います。
ここでは、ネットの記事をまとめましたが、手元にある本のモナド・モナドトランスフォーマーの箇所をしっかり読み込んでわからないところは解説記事を参照する方が、よく理解できると思います。
- プログラミングHaskellは、シンプルでモナドの解説がしっかりしていて、haskellの入門におすすめですが、モナドトランスフォーマーの説明がないのでそこは他の資料が必要です。
- すごいHaskell楽しく学ぼうモナドの解説が懇切丁寧です。プログラミングHaskellは、Functor, Applicativeなどの説明はないですが、こちらはそれぞれの関係が詳しく載っています。ただ、モナドトランスフォーマーの説明はありません。
- 関数プログラミング入門 ―Haskellで学ぶ原理と技法こちらは、モナドトランスフォーマーの説明があります。
ライブラリの紹介記事はMTL
で検索してもなかなか出てこないので、Control.Monad.State
など具体的なモジュール名で検索する方がよさそうです。
今回は、State, Reader, Writerの紹介記事をまとめました。
MTL、モナドトランスフォーマー全般
- Monad Transformers Monad トランスフォーマーライブラリのまとめと、モナドトランスフォーマーの関連記事のリンク。この中でMTLが主要ライブラリの一つとして紹介されている。
- Monad Transformers Explained モナドトランスフォーマーの説明。
- Monad Transformers Step by Step モナドトランスフォーマーの使い方。日本語訳あり。
- All About Monads モナドとモナドトランスフォーマーのチュートリアルと主要なモナドインスタンスを一通り紹介。
- 他は、MTLとTransformersどちらを使うかの議論ページ。
- The mtl package hackageのページ。パッケージ状況について詳しい。mtlの公式情報はここから。
- MTLのリポジトリ Githubのリポジトリ
- Functional Programming with Overloading and Higher-Order Polymorphism monadトランスフォーマーの基礎理論。
Control.Monad.State
- Haskell: Control.Monad.Stateメモ Control.Monad.Stateの解説。
Stateモナドが便利に使えた! 実際のコードがたくさんのってる。
Haskell の State モナド 説明が丁寧。
第6回 局所的な「状態」を利用するためのStateモナド こちらも説明が詳しい。
Control.Monad.Reader/Control.Monad.Writer
- 第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド 説明が詳しい。
- Haskellで大域変数が欲しい時はReaderモナドを使いましょう 実際の使いどころ。シンプルでわかりやすい。
- お気楽 Haskell プログラミング入門 モナド (2) 再実装して理解を深める。
- Haskell 状態系モナド 超入門モナドの説明
0 件のコメント:
コメントを投稿