В документации для Control.Monad.List.ListT указано, что он «не дает монаду, если монада аргументов не коммутативна».
Как мне узнать, коммутативна ли монада? Есть ли класс типов CommutativeMonad? Должен ли быть?
В частности, Control.Monad.RWS.Lazy.RWS коммутативная монада?