Please note that the content of this book primarily consists of articles available from Wikipedia or other free sources online. Pages: 50. Chapters: Generalized mean, Lazy evaluation, Monad, Haskell, Haskell 98 features, List comprehension, Conditional, First-class function, Pattern matching, Fold, Tree traversal, Algebraic data type, Map, Corecursion, Type class, Set-builder notation, One-liner program, Comparison of programming languages, Filter, Hello world program examples, Hylomorphism, Guard, Lehmer mean, Nullary constructor. Excerpt: In functional programming, a monad is a programming structure that represents computations. Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. A defined monad allows the programmer to chain actions together to build a pipeline to process data in various steps, in which each action is decorated with additional processing rules provided by the monad. Programs written in functional style can make use of monads to structure procedures that include sequenced operations, or to define some arbitrary control flows (like handling concurrency, continuations, side effects such as input/output, or exceptions). Formally, a monad is constructed by defining two operations (bind and return) and a type constructor M that must fulfill several properties to allow the correct composition of monadic functions (i.e. functions that use values from the monad as their arguments). The return operation takes a value from a plain type and puts it into a monadic container of type M. The bind operation performs the reverse process, extracting the original value from the container and passing it to the associated next function in the pipeline. A programmer will compose monadic functions to define a data-processing pipeline. The monad acts as a framework, as it's a reusable behavior that decides the order in which the specific monadic functions in the pipeline are called, and manages all t...