2012-11-08 11 views
10

可能性の重複:
lenses, fclabels, data-accessor - which library for structure access and mutation is betterData.LensまたはControl.Lens

私は私の次のHaskellのプロジェクトにレンズパッケージを使用して学習するつもりです。 Control.Lensパッケージのvan Laarhoven Lensesについてのこの記事を見つけたとき、私はほとんどData.Lensパッケージを決めました。

どちらを使用するかを決めるのに十分な違いはまだ分かりません。どのパッケージを私が実際の世界のプロジェクトで学ぶか/使用することを提案しますか?

ありがとうございました。

lenses, fclabels, data-accessor - which library for structure access and mutation is better

+4

SOリンクの回答で何が問題になっていますか? – Pubby

+0

SOリンクの答えで何かが間違っている可能性がありますが、その答えにないことをあなたが知りたいことを私たちに教えていないなら、あなたは後の情報を取得しません。 – Ben

+2

私はそれが私が探している第三の視点​​だと思います。 SOの投稿は両方のパッケージの作成者によって書かれました。彼は2を比較しますが、私の頭は少し上回ります。 – MFlamer

答えて

14

Control.Lensは、ほぼ確実にあなたが望むものです。 Data.Lensが最初に来てより簡単ですが、Control.Lensには多くの利点があり、積極的に開発されています。

レンズ以外にも、トラバーサル(トラバーサルは1つではなくnの値を参照できるレンズのような)のような多くの関連するタイプがあり、折りたたみ、読み取り専用レンズ、インデックス付きレンズ、同形物などです。また、標準ライブラリ型のための便利な関数と定義済みのレンズ、レンズを派生させるTemplate Haskell、ジェネリックジッパーやユニプレートスタイルの一般的なトラバーサルのような他のもののためのコード群が含まれています。

それはすべてのものを使う必要はありませんが、あなたがすでに書いておきたいことを持っているのは良いことです。

Data.Lensの主な利点は、それがより簡単であり、Haskell 98を超える拡張を必要としないということです。しかし、Control.Lensスタイルのレンズをライブラリから書き出したい場合は、 Haskell 98 - 実際、パッケージにはまったく依存しません。

+0

昨夜もう少し研究をした後、私は同じ結論に達しました。優れた反応をありがとう。 – MFlamer

6

あなたが実世界プロジェクト(TM)を扱っている場合は、私は非常にControl.Lensをお勧めします。最近Edwardkはこれに多くの努力を重ねてきました。あなたのユースケースについて聞いてみたいと思います。私の意見では、これは正式なLensライブラリになる予定です。 Data.LensでできることはすべてControl.Lensで行うことができます。

0

Data.Lensは、操作がはるかに簡単で簡単です。 Control.Lensには非常に多くのモジュールがあり、言語拡張を使用してジョブを完了します。

関連する問題