Chapter 14. The PyMonad Library
A monad allows us to impose an order on an expression evaluation in an otherwise lenient language. We can use a monad to insist that an expression such asa + b + c is evaluated in left-to-right order. This can interfere with the compiler's ability to optimize expression evaluation. This is necessary, for example, when we want files to have their content read or written in a specific order: a monad assures that the read()
and write()
functions are evaluated in a particular order.
Languages that are lenient and have optimizing compilers benefit from monads imposing order on the evaluation of expressions. Python, for the most part, is strict and does not optimize. There are no practical requirements for monads.
However, the PyMonad package contains more than just monads. There are a number of functional programming features that have a distinctive implementation. In some cases, the PyMonad module can lead to programs which are more succinct and expressive than...