Одна веская причина в том, что вы можете написать монадические функции, которые не привязаны к конкретной монаде, а затем выполнить их в блоке with-monad
.identity-m
дает вам возможность не задействовать какой-либо специальный монадический вуду, если вы напишите (with-monad identity-m ...)
.
(Понятно, что это не сработает, если ваша монадическая функция существенно использует некоторые свойства монады для своей работыс, например, доступностью метода получения и установки для состояния и т. д. Однако не все монадические функции такие.)