19

これらの3つのモナド変換子の違いは何ですか?

4

1 に答える 1

25

さて、まず第一にListT、真のモナド変換子ではありません。これは、特定の基礎となるモナドの結合法則に違反します。また、一般的なリストへのモナディックインターフェイスと同様に、かなり低速です。これは、内部で実際のリストに基づいて構築されています。

LogicTリストのようなモナド変換子にはおそらく最良の選択です。適切なモナド変換子を実装するだけでなく、フェアリスト製品用の非常に便利なコンビネータもいくつか実装しています。

ChoiceT私自身の作品です。これは基本的にCPSedバージョンであり、 monadLibとfromのLogicT両方に触発されています。これは非常に高速で、多くの場合、(変換されていない)リストよりも優れていますが、タイプが怖い場合があり、結果タイプにバインドされている場合があります。LogicTChoiceT

結論:真剣な場合は、を使用してLogicTください。

于 2013-01-02T16:50:30.327 に答える