[{"name":"Monoid","comment":" A module to define generic functions for monoid.\nFor instance, we defined generic `concat` in this module using `Monoid` type as follows.\n\n    concat : Monoid a -> List a -> a\n    concat m =\n        List.foldr (append m) (empty m)\n\n    concat string [\"foo\", \"bar\", \"baz\"]\n    --> \"foobarbaz\"\n\n    concat list [[1, 2, 3], [4, 5], [6]]\n    --> [1, 2, 3, 4, 5, 6]\n\n    concat sum [Sum 1, Sum 2, Sum 3, Sum 4] -- 1 + 2 + 3 + 4\n    --> Sum 10\n\n    concat sum <| List.map Sum [1, 2, 3, 4] -- 1 + 2 + 3 + 4\n    --> Sum 10\n\n    concat product <| List.map Product [1, 2, 3, 4] -- 1 * 2 * 3 * 4\n    --> Product 24\n\n\n# Types\n\n@docs Monoid\n@docs Sum\n@docs Product\n\n\n# Constructors\n\n@docs monoid\n\n\n# Functions for unwraping Monoid\n\n@docs empty\n@docs append\n\n\n# Convenient functions for monoid\n\n@docs concat\n\n\n# Monoid types for popular types\n\n@docs string\n@docs sum\n@docs product\n@docs list\n@docs array\n@docs dict\n@docs set\n@docs cmd\n@docs sub\n\n","unions":[{"name":"Monoid","comment":" Main type.\n","args":["a"],"cases":[]},{"name":"Product","comment":" `Monoid` under multiplication.\n","args":["a"],"cases":[["Product",["a"]]]},{"name":"Sum","comment":" `Monoid` under addition\n","args":["a"],"cases":[["Sum",["a"]]]}],"aliases":[],"values":[{"name":"append","comment":" Take the way to append a monoids.\n","type":"Monoid.Monoid a -> a -> a -> a"},{"name":"array","comment":" `Monoid` type for `Array`.\n","type":"Monoid.Monoid (Array.Array a)"},{"name":"cmd","comment":" `Monoid` type for `Cmd`.\n","type":"Monoid.Monoid (Platform.Cmd.Cmd comparable)"},{"name":"concat","comment":" Concatenate list of monoid.\n","type":"Monoid.Monoid a -> List.List a -> a"},{"name":"dict","comment":" `Monoid` type for `Dict`.\n","type":"Monoid.Monoid (Dict.Dict comparable a)"},{"name":"empty","comment":" Take the identity element of a monoid.\n","type":"Monoid.Monoid a -> a"},{"name":"list","comment":" `Monoid` type for `List`.\n","type":"Monoid.Monoid (List.List a)"},{"name":"monoid","comment":" Constructor for `Monoid`.\n","type":"a -> (a -> a -> a) -> Monoid.Monoid a"},{"name":"product","comment":" `Monoid` type for `Product`.\n","type":"Monoid.Monoid (Monoid.Product number)"},{"name":"set","comment":" `Monoid` type for `Set`.\n","type":"Monoid.Monoid (Set.Set comparable)"},{"name":"string","comment":" `Monoid` type for `String`.\n","type":"Monoid.Monoid String.String"},{"name":"sub","comment":" `Monoid` type for `Sub`.\n","type":"Monoid.Monoid (Platform.Sub.Sub comparable)"},{"name":"sum","comment":" `Monoid` type for `Sum`.\n","type":"Monoid.Monoid (Monoid.Sum number)"}],"binops":[]}]