色々、あってサボっていたが今日からまた勉強を再開しました。
ブランクが長かったので 12章 モノイドの初めから進めました。 今日は 12章の終わり(位置 6572)まで読み進めました。
今日のまとめ
type, newtype, data の違い
- type 型シノニム、型に別名をつける、別名と元の型名は同じなので混ぜて書いてもよい。
- newtype 既存の型を包み込んだ新しい型を作り出す。
慣用句: newtype 新しい型名 = 新しい型名 { get新しい型名 :: 既存の型名} deriving (...) - data 自作の新しい型を作る複数のコンストラクタを持てる。
Monoid
結合的(associativity) な二項演算子と単位元からなる構造 Monoidにする方法が複数あるときは newtype でくるむ。 Ordering モノイドを使うと、値比較で優先する特徴と劣後する特徴を持つような事例を簡単にあらわせる。
Folderble
畳みこみのできる構造 有る形を Folderbleにするには foldMap を定義すればよい。
わからなかったこと
foldMap を定義するとなんで foldr が自動的に使えるようになるのか。