Документация для Control.Monad.List.ListT утверждает, что она "не дает монаду, если аргумент monad не является коммутативным".
-
Как узнать, является ли монада коммутативной? Существует ли класс CommutativeMonad? Должно ли быть?
-
В частности, Control.Monad.RWS.Lazy.RWS коммутативная монада?