skip to main |
skip to sidebar
[2] MONOIDS
- a monoid is collection of items with a way of putting two items in the collection together, independent of what the items are
- in addition, a monoid has two rules: an associativity operation and an identity element
- define the dot operation to model function composition so f·g is a new function
- also (f·g)a means that we apply our new function to the argument a
- note that (f·g)a = g(f(a)) [1]
- now we can remove the parenthesis on the left hand side of [1] and give the new function a name such that (f·g) = h
- after this composition, we have to figure out what the type of h is, which is easy in this case: since f takes an a and returns an a, and g takes an a and returns an a, then h also takes an a and returns an a
- therefore the composition of f and g can be shown as: f·g = h: a -> a
- this composition, the act of taking two simple things of the same type and have a rule to combine them into something more complex of the same type is basically the essence of what a monoid is
Rules of Monoids
- [1] Associativity: x·(y·z) = (x·y)·z
- [2] Identity: a monoid must contain a special member such that x combined with the special member is always x (in F# this member is called unit): x + unit = x
- a monoid does not have to satisfy commutativity: x·y != y·x
No comments:
Post a Comment