Monads in Common Lisp

Abstract

In this article we explain monads so they can be understood to the Lisp programmer. We base the explanation on a very clean explanation presented in the Scala programming language. We then proceed to re-present the concepts using mostly simple Common Lisp concepts. We do not attempt to justify the motivation behind the definitions, and we do not attempt to give any examples of applications. Most notably, we do not attempt to explain the connection monads have to modeling side effects.