Есть обычное вычисление a -> b
Монады же реализуют вычисления с эффектами:
Maybe - может быть неудача,
Список - много результатов,
Either - типизированные исключения,
(s, b) - запись в лог,
( (->) e ) b - чтение из внешнего окружения,
(State s) b - изменяемые состояния,
IO b - ввод-вывод (консоль, файлы).
(примеры для Haskel)