Monoid[G]
の G
に入る型は型引数をとらない kind が * の型だけど、仮に * の型にダミーの型引数 [.]
をつけて G[.]
と表現してみると
Method | Constraint | Signature |
---|---|---|
Foldable#foldMap |
Monoid[G] |
F[A] => (A => G[.]) => G[....] |
Traverse#traverse |
Applicative[G] |
F[A] => (A => G[B]) => G[F[B]] |
Foldable#fold |
Monoid[G] |
F[G[.]] => G[....] |
Traverse#sequence |
Applicative[G] |
F[G[A]] => G[F[A]] |
よく似ているのがお分かりいただけるだろうか
see also https://github.com/ekmett/lens/wiki/Derivation#the-power-of-