これらの3つのモナド変換子の違いは何ですか?
質問する
1109 次
1 に答える
25
さて、まず第一にListT
、真のモナド変換子ではありません。これは、特定の基礎となるモナドの結合法則に違反します。また、一般的なリストへのモナディックインターフェイスと同様に、かなり低速です。これは、内部で実際のリストに基づいて構築されています。
LogicT
リストのようなモナド変換子にはおそらく最良の選択です。適切なモナド変換子を実装するだけでなく、フェアリスト製品用の非常に便利なコンビネータもいくつか実装しています。
ChoiceT
私自身の作品です。これは基本的にCPSedバージョンであり、 monadLibとfromのLogicT
両方に触発されています。これは非常に高速で、多くの場合、(変換されていない)リストよりも優れていますが、タイプが怖い場合があり、結果タイプにバインドされている場合があります。LogicT
ChoiceT
結論:真剣な場合は、を使用してLogicT
ください。
于 2013-01-02T16:50:30.327 に答える