монады это набор функций что бы работать с объектами упакованные в другие объекты, по крайне у меня такое впечатление сложилось. Если есть монада ты не паришься о том как вынуть и засунуть значения. А просто выбираешь нужную монаду под задачу. Я так догадываюсь их не реализуют в других языках, т.к. они там не так актуальны как в haskell.