Важно помнить, что концепция Monad не о типах! Системы типов помогают вам применять правила (но даже Haskell не может применять все правила, поскольку некоторые из них (законы монад) не могут быть полностью выражены системой типов.
Монады - это композиция, и это очень важная вещь, которую мы все делаем каждый день на каждом языке программирования. Во всех случаях Monad отслеживает некоторый «дополнительный контекст» о том, что происходит ... думайте об этом как о блоке, который удерживает текущее значение. К этому значению могут применяться функции, а дополнительный контекст может развиваться как ортогональная задача.
Тип Maybe предназначен для объединения длинных последовательностей вычислений, при этом не нужно ничего говорить о сбое (что является «дополнительным контекстом»). Это шаблон, который перемещает «обработку ошибок» из вычислений в монаду. Вы можете связать последовательность вычислений с типом Maybe, и как только один из них завершится неудачей, остальные будут проигнорированы, и в результате вы получите «ничего». Если все они успешны, то ваш окончательный результат - монада, содержащая значение результата.
Это позволяет вам писать код, который намного менее запутан.
Clojure поддерживает монады, как указывает @deterb.