10

重複の可能性:
lens、fclabels、data-accessor - 構造アクセスとミューテーション用のどのライブラリが優れているか

次の Haskell プロジェクトでは、Lens パッケージを使用して学習します。Data.Lensパッケージにvan Laarhoven Lensesが記載されているこの投稿を見つけたとき、私はパッケージをほぼ決定していましたControl.Lens

どちらを使用するかを決定するのに十分な違いをまだ理解していません。実際のプロジェクトで学習/使用することをお勧めするパッケージはどれですか?

ありがとう。

lens, fclabels, data-accessor - 構造アクセスとミューテーション用のどのライブラリが優れているか

4

3 に答える 3

13

Control.Lensほぼ確実にあなたが望むものです。Data.Lensよりシンプルですが、Control.Lens多くの利点があり、活発に開発されています。

レンズ以外にも、Control.Lensトラバーサル (トラバーサルは、1 つの値ではなく n 値を参照できるレンズのようなものです)、折り畳み、読み取り/変更専用レンズ、インデックス付きレンズ、同型など、関連する多くの型があります。標準ライブラリ型用の便利な関数と事前定義されたレンズのはるかに大きなライブラリ、レンズを派生させるための Template Haskell、および汎用ジッパーやユニプレート スタイルの汎用トラバーサルなどのコードの束。

これは大きなライブラリです。すべてを使用する必要はありませんが、必要なものが既に作成されていると便利です。

の主な利点Data.Lensは、それがよりシンプルであり、Haskell 98 を超える拡張機能を必要としないことです。ただしControl.Lens、ライブラリから 形式のレンズをエクスポートするだけの場合は、Haskell 98 を終了せずに実行できることに注意してください -- 実際、 、パッケージにまったく依存しません。

于 2012-11-08T13:44:33.297 に答える
6

Real World Project (tm) を扱っている場合は、Control.Lens を強くお勧めします。Edwardk は最近、多くの努力を払っており、あなたの使用例についてぜひ聞きたいと思っています。私の意見では、これは正規の Lens ライブラリになるでしょう。Data.Lens でできることはすべて、Control.Lens でもできると言っても過言ではありません。

于 2012-11-08T07:14:57.437 に答える
0

Data.Lensはるかにシンプルで使いやすいです。 Control.Lens非常に多数のモジュールがあり、言語拡張機能を使用して仕事を完了します。

于 2012-11-08T21:27:37.307 に答える