19

这三个monad转换器有什么区别?

4

1 回答 1

25

好吧,首先ListT它不是一个真正的单子转换器。它违反了某些潜在单子的结合律。它也很慢,一般列表的单子接口也是如此。它建立在内部的实际列表之上。

LogicT可能是类似列表的 monad 转换器的最佳选择。它不仅实现了适当的 monad 转换器,而且还实现了一些非常有用的公平列表产品组合器。

ChoiceT是我自己的作品。它基本上只是一个 CPSed 版本,并LogicT受到来自monadLib的启发。它非常快,通常优于(未转换的)列表,但类型可能很吓人,并且您会被绑定到结果类型,这有时可能会妨碍您。LogicTChoiceT

结论:如果您是认真的,请使用LogicT.

于 2013-01-02T16:50:30.327 回答