問題タブ [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.

0 投票する
2 に答える
285 参照

haskell - レンズ ライブラリを使用して snoc する方法は?

Edwardsライブラリを使用しようとしているときに、私は再び困惑しています。状態コンテキストでベクトルの最後に何かlensしようとしています:snoc

これは機能しますが、使用したいのです[cons][2]が、方法がわかりません。ドキュメントには記載されています[0,1,2] |> 3 === [0,1,2,3]が、状態のコンテキストでこれを行う方法がわかりません。

0 投票する
2 に答える
234 参照

haskell - Lenses を使用して、ある状態で保持されているシーケンスに対して読み取り専用のモナド操作を実行するにはどうすればよいですか?

私のデータ構造は多かれ少なかれこのように見えます(質問のために単純化されています)

makeLensesこれらの両方のアクセサーを生成するために使用します。したがって、次のように操作をまとめて行うことができます。

そして、これは素晴らしいです。


ただし、これと同等の方法を見つけることができません(すべてを印刷num):

私は次のようなことを試しました

しかし、そのような状態で使用する唯一の方法はtraversed、モノイドを使用することであり、フィールドを結合したくありません。state に存在するいくつかのシーケンスからの要素のすべての要素の一部に対してモナド アクションを実行したいと考えています。

それで、これは提供されたレンズ関数を使用して可能ですか、それとも自分で書く必要がありますか?

0 投票する
2 に答える
566 参照

haskell - レンズ構文を使用してマップにキーがあるかどうかを確認するには?

レンズ構文を使用してマップにキーがあるかどうかを確認するには?

レンズを使ってこれを書くには?

0 投票する
4 に答える
3794 参照

haskell - レンズとジッパーの違いは何ですか?

これは、Haskell でジッパーを使用する例です。

これは、Clojure でジッパーを使用する例です。

これは、Haskell で Lens を使用する例です。

これは、Clojure で Lens を使用する例です。

現在、レンズとジッパーの両方が、ネストされたデータ構造をトラバースする機能的な方法であるようです。

私の質問は:レンズとジッパーの違いは何ですか? 特定のユースケースに適していますか?

0 投票する
1 に答える
925 参照

haskell - レンズでモナド関数を使用して変更する方法は?

のように機能するレンズ関数が必要でしたoverが、モナド演算を使用します。

この関数は簡単に定義できますが (実際には単なる恒等法です)、そのような関数はlensWrappedMonadのどこかに定義されているのでしょうか?

0 投票する
0 に答える
303 参照

haskell - レンズ ライブラリの使用は、命令型言語でのプログラミングとどのように異なりますか?

C や Python などの言語よりもレンズ ライブラリを使用すると、どのような利点がありますか?

レンズ ライブラリでは状態は依然として不変であることがわかりますが、実用的な観点からは、どのように違うのでしょうか?

例は非常に役に立ちます。

編集:

私が本当に知りたいのは、不変状態を持つことがレンズライブラリにとって有利/不利である理由です。たとえば、可変状態のレンズではより良いパフォーマンスを達成できないのでしょうか?

0 投票する
1 に答える
200 参照

haskell - レンズとファンクターを組み合わせるにはどうすればよいですか?

私はlensHaskell のライブラリに慣れようとしていますが、いくつかの単純な問題に苦労していることに気づきました。たとえば、(便宜上)次のタイプがあるatとしましょう(_1少なくとも、これが私が理解している方法です):

これらのレンズを次のタイプのレンズに組み合わせるにはどうすればよいですか。