История изменений
Исправление quasimoto, (текущая версия) :
Есть такая вещь — каждое чистое поднимется в монадическое с помощью return, но не всегда обратно, так что если я сделаю c m a, то я буду работать и с чистым (когда оно поднимется) и с эффектами (если это IO), если только a — более специальный вариант, только чистое (мутабельные коллекции по боку). Кроме того, у всякой функции с аргументом a есть версия с аргументом m a и так для всех аргументов — автоматического лифтинга нет. Просто в base нет версии unless с Bool в m. А не IO потому что unlessM _существует_ в теории монад — такое же m как и любое другое m из Control.Monad (там тоже всё существует, то есть выводится из аксиом монады).
Исправление quasimoto, :
Есть такая вещь — каждое чистое поднимется в монадическое с помощью return, но не всегда обратно, так что если я сделаю c m a, то я буду работать и с чистым (когда оно поднимется) и с эффектами (если это IO), если только a — более специальный вариант, только чистое (мутабельные коллекции по боку). Кроме того, у всякой функции с аргументом a есть версия с аргументом m a и так для всех аргументов — автоматического лифтинга нет, так что map/mapM, filter/filterM etc. Просто в base нет версии unless с Bool в m. А не IO потому что unlessM _существует_ в теории монад — такое же m как и любое другое m из Control.Monad (там тоже всё существует, то есть выводится из аксиом монады).
Исходная версия quasimoto, :
Есть такая вещь — каждое чистое поднимется в монадическое с помощью return, но не всегда обратно, так что если я сделаю c m a, то я буду работать и с чистым (когда оно поднимется) и с эффектами, если только a — более специальный вариант, только чистое (мутабельные коллекции по боку). Кроме того, у всякой функции с аргументом a есть версия с аргументом m a и так для всех аргументов — автоматического лифтинга нет, так что map/mapM, filter/filterM etc. Просто в base нет версии unless с Bool в m. А не IO потому что unlessM _существует_ в теории монад — такое же m как и любое другое m из Control.Monad (там тоже всё существует, то есть выводится из аксиом монады).