我一直在为 Clojure 程序员阅读关于 monad 的精彩介绍。这篇文章说明了 Identity monad 在功能上等价于 Clojure 的let并且 Sequence/List monad 等价于for。
当文章谈到 monad 转换器时,它展示了一个结合 Maybe 和 Sequence monad 的示例。好的,所以使用 Sequence monad 而不是 for 的一个原因是我可以转换它。但是,转换 Identity monad 对我来说没有意义——这不总是等同于构建转换 monad 的任何东西吗?例如,如果我用 Identity 转换了 Maybe - 那不只是给了我一个 Maybe,这会更容易直接声明吗?
有人可以澄清在 Clojure中选择 Identity monad 而不是let是否有实际用途(也许我没有一直考虑变压器的含义?),还是只是为了理论上的完整性?