Additional PyMonad features
One of the other features of PyMonad is the confusingly named
monoid. This comes directly from mathematics and it refers to a group of data elements that have an operator, an identity element, and the group is closed with respect to that operator. When we think of natural numbers, the add
operator, and an identity element 0
, this is a proper monoid. For positive integers, with an operator *
, and an identity value of 1
, we also have a monoid; strings using |
as an operator and an empty string as an identity element also qualifies.
PyMonad includes a number of predefined monoid classes. We can extend this to add our own monoid
class. The intent is to limit a compiler to certain kinds of optimizations. We can also use the monoid class to create data structures which accumulate a complex value, perhaps including a history of previous operations.
Much of this provides insight into functional programming. To paraphrase the documentation, this is an easy way to learn...