そろそろScala 2.10.0がリリースされそうなので、調査の対象をScala 2.10.0 & Scalaz 7に移行しようと思います。そこでMonoidも一旦〆ることにしました。
Monoidは、他の項目でいろいろな形で説明してきているので、Monoidの項目で直接取り上げるのは2つのみになっています。
項目 | 内容 |
---|---|
Monoid - 新規作成 | Scalaz型クラスMonoidの型クラスインスタンスを実装する方法 |
Monoid (2) - 中央値 | 中央値をMonoid化する |
他の項目のところでは以下のとおり再三Monoidが登場しています。
- Option (8)
- Option (12) - Monoid
- Either (13) - 二項演算, AND, Monoid
- Either (16) - 二項演算, OR, Monoid
- Validation (25) - fold monoid
- Validation (26) - fold monoid or
- Validation (29) - Foldable
- Validation (30) - foldまとめ
- Validation (34) - Semigroup
- Validation (35) - Monoid
- Validation (36) - Reducer
- Reducer (5) - 演算Monoid
- foldの選択
- Scalazの型クラス
- クラウド温泉3.0 (12) / Monoid
Monoidは関数型プログラミングでの重要構成要素の一つだと思うので、どこかの時点でMonoid中心の視点でまとめ直してみたいと思います。
既存Index
以下は既存のIndexです。
Validation
Validationの一連の記事では、Validationを素材にScalaやScalazの基本機能の使い方を調べるという意味合いも強くなっています。
以下はこの流れからスピンアウトして単独の記事にしたものです。
またValidation記事の中にも、基本機能の説明が主になっているものもあります。
Reducer
項目 | 内容 |
---|---|
Reducer | IntProductReducerを素材にReducerの基本的な使い方 |
Reducer (2) - List | ListReducerを素材に非可換MonoidでのReducerの振舞い |
Reducer (3) - モノイド化 | 非Monoidに対してReducerでモノイド演算を行う |
Reducer (4) - 自前Reducer | 自前でReducerを用意する |
Reducer (5) - 演算Monoid | 汎用MonoidをReducerでドメインオブジェクトに結びつける |
Generator | Generatorで畳込み戦略、汎用Monoid、ドメインオブジェクトを結びつける |
Reducerの操作対象であるMonoidについて以下の記事が前提となります。
IntProductReducerで使っているMonoidであるIntMultiplicationは以下の記事で説明しています。
Either
項目 | 内容 |
---|---|
Either | 値の取得 |
Either (2) - flatMap | flatMapで文脈の切替 |
Either (3) - getOrElse | getOrElseでデフォルト値を指定 |
Either (4) - getOrElse, FlatMap | flatMapで変換後にgetOrElse |
Either (5) - Exception | scala.util.control.Exceptionで例外ハンドリング |
Either (6) - Left, Right | LeftとRightの生成 |
Either (7) - for | for式で変換 |
Either (8) - for, getOrElse | for式で変換後にgetOrElse |
Either (9) - 二項演算 | 二項演算の説明 |
Either (10) - 二項演算,AND | 「Either:AND」×「値:任意の関数で計算」 |
Either (11) - Applicative | Eitherに対するApplicative |
Either (12) - Applicativeの記述方法 | Eitherに対するApplicative(続き) |
Either (13) - 二項演算,AND,Monoid | 「Either:AND」×「値:Monoid」 |
Either (14) - 二項演算,AND,Plus | Either:AND」×「値:Plus」 |
Either (15) - 二項演算,OR | 「Either:OR」×「値:任意の関数で計算」 |
Either (16) - 二項演算,OR,Monoid | 「Either:OR」×「値:Monoid」 |
Either (17) - 二項演算,OR,Plus | 「Either:OR」×「値:Plus」 |
Either (18) - Booleanと相互変換 | EitherとBooleanの相互変換 |
Either (19) - Optionと相互変換 | EitherとOptionの相互変換 |
Either (20) - Validationと相互変換 | EitherとValidationの相互変換 |
Either (21) - Bifunctor | EitherにBifunctorを適用 |
Option
項目 | 内容 |
---|---|
Option | 値の取得 |
Option (2) | nullをOptionに持ち上げる方法 |
Option (3) | map |
Option (4) | withFilter |
Option (5) | collect |
Option (6) | flatMap |
Option (7) | for式 |
Option (8) | getOrElse |
Option (9) | withFilter, map, getOrElse |
Option (10) - Exception | flatMap, Exceptionハンドリング |
Option (11) - Some/None | SomeとNoneの記述方法 |
Option (12) - Monoid | OptionをMonoidとして使う |
Option (13) - Monoid 短絡OR | FirstOption/LastOptionで短絡OR | |
null | nullを値に持ち上げる方法 |
Optionについては以下の記事も参考になると思います。
追記(2012-08-27)
Option(5)〜Option(11)までリンク切れしていたので修正しました。
0 件のコメント:
コメントを投稿