小智 21
嗯,首先ListT不是真正的monad变压器.它违反了某些潜在的单子的相关性定律.它也很慢,一般来说列表的monadic接口也是如此.它建立在内部的实际列表上.
LogicT可能是列表式monad变换器的最佳选择.它不仅实现了一个合适的monad变压器,而且还为公平列表产品提供了一些非常有用的组合器.
ChoiceT是我自己的工作.它基本上是一个CPSed版本LogicT,由两个启发LogicT和ChoiceT从monadLib.它非常快,通常表现优异(非变换)列表,但类型可能很吓人,你可能会遇到结果类型,有时可能会以你的方式.
结论:如果你是认真的,请使用LogicT.