This document discusses monadic programming (MP) in Clojure. It begins with introductions to monads and monadic programming in Haskell. It then discusses reasons for using MP in Clojure despite it not having static typing or being purely functional. It explains two libraries for MP in Clojure - clojure.algo.monads and funcool/cats - and how they implement monads using macros and protocols. Examples are given of using monads for error handling in a reverse Polish notation calculator and for representing probability distributions.