Hackageにはモナド変換のためのいくつかのパッケージがあります:
- mtl:モナド変換ライブラリ
- トランスフォーマー:コンクリートファンクターおよびモナドトランスフォーマー
- monads-fd:関数の依存関係を使用するモナドクラス
- monads-tf:タイプファミリーを使用するモナドクラス
- monadLib:モナド変換子のコレクション。
- mtl-tf:タイプファミリーを使用するモナド変換ライブラリ。
- mmtl:モジュラーモナド変換ライブラリ
- mtlx:タイプインデックス付きのモナド変換ライブラリ。「無料」のコピーを提供します。
- compose-trans:合成可能なモナド変換子
(そしておそらく私はいくつかを逃した)
どれを使用しますか?
mtlはHaskellプラットフォームの1つですが、redditはクールではないと聞いています。
とにかく、選択の何が悪いのですか、それはただ良いことではありませんか?
ええと、たとえば、データアクセサーの作成者がこれらすべてを、人気のある選択だけに応えるために作成しなければならない方法を見ました。
- data-accessor-monadLibライブラリ:monadLibのモナドのアクセサ関数
- data-accessor-monads-fdライブラリ:アクセサを使用してモナドfd状態モナドクラスの状態にアクセスする
- data-accessor-monads-tfライブラリ:アクセサーを使用してモナドtf状態モナドタイプファミリーの状態にアクセスする
- data-accessor-mtlライブラリ:Accessorを使用してmtl Stateモナドクラスの状態にアクセスする
- data-accessor-transformersライブラリ:アクセサーを使用してトランスフォーマーの状態モナドの状態にアクセスする
これが続き、たとえばいくつかの競合するArrowパッケージが進化した場合、spoonklink-arrows-transformers、spoonklink-arrows-monadLib、spoonklink-tfArrows-transformers、spoonklink-tfArrows-monadLib、...のように見えるかもしれません。
そして、spoonklinkがフォークされると、Hackageがディスク領域を使い果たしてしまうのではないかと心配しています。:)
質問:
- なぜそれほど多くのモナド変換パッケージがあるのですか?
- なぜmtlはクールでないと考えられていますか?
- 主な違いは何ですか?
- これらの競合しているように見えるパッケージのほとんどは、Andy Gillが作成し、Ross Patersonが保守しています。これは、これらのパッケージが競合しているのではなく、何らかの方法で連携していることを意味しますか?AndyとRossは、独自のパッケージを廃止されたと見なしていますか?
- あなたと私はどちらを使うべきですか?