is in providing a set of useful abstractions to solve common problems and promote code reuse. Our goal as software engineers should be to recognize common problems and write reusable abstractions to solve them.

and composition Monads are important objects in category theory As such, monads tend to be more important and prevalent in strongly functional languages.

do joke List - represents non-deterministic (or, with a little modiﬁcation, probabilistic) computation Maybe - represents computation that might fail to return a value

do joke List - represents non-deterministic (or, with a little modiﬁcation, probabilistic) computation Maybe - represents computation that might fail to return a value State - functions that alter program state

do joke List - represents non-deterministic (or, with a little modiﬁcation, probabilistic) computation Maybe - represents computation that might fail to return a value State - functions that alter program state Persistent - functions that alter a database