記事一覧
分類
失敗系 (List, Maybe, Either)
状態系 (IO, ST, State, Reader, Writer)
- 状態系は、純粋関数型言語である Haskell で状態を扱うために使われる。
- IO は入出力を扱う。また IORef は変更可能な変数のようなものとして利用できる。
- IO の外に値を持ち出すことはできない。(IOがつきまとう。)
- ST は外に値を持ち出すことができる。STRef は変更可能なローカル変数のようなものとして利用できる。
- State は値だけでなく状態も持ち出せる。
- State は連鎖した関数の間で状態を共有してグローバル変数のようなものとして利用できる。
- Reader は読み取り専用の値を共有できる。グローバル定数のようなものとして利用できる。
- Writer は追記専用の値を共有できる。ログを取るために使われることが多い。
ポエム
- 「モナドはジェネリック型のコンテナのようなもの」というのは本質的な理解ではないが、実践的な理解の足掛かりにはなる。
- 「クラスは構造体の拡張のようなもの」というのは本質的な理解ではないが、実践的な理解の足掛かりにはなったのと同じ。
- 「モナドはブリトーのようなもの」みたいなよく分からない比喩は役に立たない。
- 「クラスはたい焼きの型のようなもの」みたいなよく分からない比喩は役に立たなかったのと同じ。
- そもそもブリトーなんて料理食べたことないから比喩として成立しない。
- 「モナドは自己関手の圏におけるモノイド」という説明は、ブリトーと五十歩百歩。
- あれは圏論の教科書の一節であって、群論の基礎知識があると想定される読者への説明。
- モノイドなにそれおいしいのな人には何の説明にもならない。