昨日のYLUGで上がっていたものをちょろっとメモする
JMH
SBTのJMH
JVM監視ツール
使いドコロがよくわかっていない。
昨日のYLUGで上がっていたものをちょろっとメモする
JMH
SBTのJMH
JVM監視ツール
使いドコロがよくわかっていない。
モノイドは、結合的な二項演算子( 2 引数関数)と、その演算に関する単位元からなる構造
などの関数がある
レファレンスはこちら Data.Monoid
こんな感じの性質を持っているのがモノイド
0 + 100 -> 100 100 + 0 -> 100
Prelude Data.Monoid> foldr (++) "" ["a","b","c"] "abc" Prelude Data.Monoid> foldr (+) 0 [1,2,3,4,5] 15
モノイドには固有の二項演算があること、その二項演算に関する単位元があること、その二項演算は結合的であること、などの条件がある
Haskell的には以下のコードが満たされていることが重要
mempty `mappend` x = x x `mappend` mempty = x (x `mappend` y) `mappend` z = x `mappend` (y `mappend` z)
対象となる演算によって単位元は変わる
1 * 100 -> 100 100 * 1 -> 100
計算方法によっては、モノイドであったりモノイドでなかったりする
// モノイドの例 ("a" ++ "b") ++ "c" "a" ++ ("b" ++ "c") // モノイドではない例 100 / 100 / 100 100 / (100 / 100)
なお、mappendの左単元と右単元を交換して結果が異なっても構わん。
Foldableのはなし
Foldableのリファレンス Data.Foldable