这三个monad转换器有什么区别?
问问题
1109 次
1 回答
25
好吧,首先ListT
它不是一个真正的单子转换器。它违反了某些潜在单子的结合律。它也很慢,一般列表的单子接口也是如此。它建立在内部的实际列表之上。
LogicT
可能是类似列表的 monad 转换器的最佳选择。它不仅实现了适当的 monad 转换器,而且还实现了一些非常有用的公平列表产品组合器。
ChoiceT
是我自己的作品。它基本上只是一个 CPSed 版本,并LogicT
受到来自monadLib的启发。它非常快,通常优于(未转换的)列表,但类型可能很吓人,并且您会被绑定到结果类型,这有时可能会妨碍您。LogicT
ChoiceT
结论:如果您是认真的,请使用LogicT
.
于 2013-01-02T16:50:30.327 回答