問題タブ [haskell-lens]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - フィールドコンストラクタパラメータを関数に渡す方法は?
1) フィールド コンストラクター パラメーターを関数に渡す必要があります。いくつかのテストを行いましたが、できませんでした。出来ますか?もしくはレンズパッケージで可能でしょうか?
2) MonadState で変更を使用してフィールドを変更することは可能ですか? (私はいくつかの試みをしましたが、成功しませんでした。たとえば、modify (second = "x") は機能しません。
haskell - レンズを2回使う
lens
特定の問題のためにライブラリを使用するのに苦労しています。渡ろうとしている
- 更新されたデータ構造
- その更新された構造の一部に焦点を合わせたレンズ
別の関数に、g
. g
データ構造からの共有情報と一部の情報が必要なため、レンズとデータ構造の両方を渡します。(それが役立つ場合、データ構造には結合確率分布に関する情報が含まれていますが、g
いずれかの限界でのみ機能し、私が見ている限界を知る必要があります。2 つの限界の唯一の違いは、定義の残りの部分との平均です。データ構造で共有されています)。
私の最初の試みはこのように見えました
しかし、更新用およびゲッター用であるf
と推測されるため、コンパイル中に失敗します。Identity
Const Double
私がやりたいことを達成するための最良の方法は何ですか? 次のいずれかを実行できると想像できます。
- レンズのコピーを作成して、タイプの推論がケースごとに異なるようにする
- 更新された構造とレンズを渡すのではなく、元の構造と変更された値を返すレンズを渡します (レンズが参照する構造の部分のみを更新する場合)。
- 関数/データ構造のより良い設計選択を行う
- まったく違うもの
助けてくれてありがとう!
haskell - MonadState でレンズを使用する際の可能性と問題点
以下は、私の前の質問に対する Petr Pudlak の解決策に基づいた、MonadState のレンズ (Edward Kmett による) に関する一連の例/演習です。
これらの例は、いくつかの用途とレンズの能力を示すだけでなく、GHCi によって生成された型シグネチャを理解することがいかに難しいかを示しています。今後改善される見込みはありますか?
以下のコメントタイプのシグネチャは、GHCi によって生成されたものです。もう 1 つは、Peter のものからの翻案です。個人的には、GHCi によって生成されたものよりも理解するのに苦労しています。なぜ GHCi は簡略化されたものを生成しないのでしょうか?
haskell - トラバーサルと折り畳みのためのポリモーフィックな「深い」関数の実装
とlens
併用していxml-lens
ます。Folds
次の関数をよりポリモーフィックにして、だけでなくでも機能するようにしたいと思いますTraversals
。
この関数は、 のdeep関数のように機能しhxt
ます。私が望む方法でそれをより多態的にすることは可能ですか?
haskell - データ構造のさまざまな部分を次々にトラバースするにはどうすればよいですか?
関数内で、 a の両方の部分をトラバースしControl.Lens.Traversal
ます。与えられた例はbeside
Bitraversable
制約の代わりに2 つの s を取るbeside
( と呼びましょう) のより明示的なバージョンを作成できますか? 私はそれが次のように使用されると想像します:bothParts
Bitraversable
Traversal
これはすでに存在しますか?これは危険すぎて正しく使用できませんか? ありがとうございました!
編集:
またはおそらく次のようなもの:
haskell - レンズですべての偶数値を変更する
次のような配列があるとします。[1, 2, 3, 4]
lens パッケージを使用して偶数値のみを変更するにはどうすればよいですか? 私は次のようなものを探しています:
haskell - 「無料」の参照を持つ Aeson Prisms
「Lens/Aeson Traversals/Prisms」というすばらしい記事を読んで、実際のアプリケーションを作成してください。次の匿名化された JSON 構造が与えられた場合、特定の値ではなくコレクションを抽出するにはどうすればよいでしょうか?
私は持っている:
私が欲しいもの:
プリズムの点全体が欠けていますか? それとも、これは正当な使用例ですか?
乾杯!