作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最佳答案
首先,ListT
不是真正的 monad 转换器。它违反了某些底层单子(monad)的结合律。它也非常慢,就像一般列表的单子(monad)接口(interface)一样。它是在内部基于实际列表构建的。
LogicT
可能是类似列表的 monad 转换器的最佳选择。它不仅实现了适当的 monad 转换器,还实现了一些对于公平列表产品非常有用的组合器。
ChoiceT
是我自己的作品。它基本上只是 LogicT
的 CPSed 版本,并且受到 LogicT
和 monadLib 中的 ChoiceT
的启发。它非常快,通常优于(未转换的)列表,但类型可能会令人恐惧,并且您必须绑定(bind)结果类型,这有时可能会妨碍您。
结论:如果您认真的话,请使用 LogicT
。
关于haskell - Haskell ListT、LogicT 和 ChoiceT 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14125207/
这三个 monad 转换器有什么区别? ListT LogicT ChoiceT 最佳答案 首先,ListT 不是真正的 monad 转换器。它违反了某些底层单子(monad)的结合律。它也非常慢,就
我是一名优秀的程序员,十分优秀!