問題タブ [lenses]

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 投票する
0 に答える
250 参照

haskell - レンズを使用してタプルのフィールドを選択する (Haskell)

以下は動作しません。どうすれば修正できますか?

私が欲しかったのは(2, 3).

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

haskell - 「オブ」レンズの使い方は?(ハスケル)

私は書きたい:

レンズを使用。レンズを使いたいのですがminimumOf、種類から使い方がわかりません。

私は次のようなものを探しています

しかし、それはチェックをタイプしません:

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

functional-programming - purescript-lens 合成タイプエラー

ネストされたレコードのプロパティを更新するために purescript-lens を使用しようとしています。ただし、レンズを作成してプロパティを取得すると、次の型エラーが発生します。

私はレンズとピュアスクリプトに比較的慣れていないので、おそらく単純で明白なものです。

このエラーを生成する関連コードは次のとおりです (はい、purescript-thermite-todomvc に基づいています)。

更新しようとしているプロパティは st.item.description で、上記のエラーは「updateState (NewItem...」で始まる行を参照しています。不思議なことに、次の行でも同じエラーが報告されています。

型エラーを解決する方法についてのアイデアはありますか?

ありがとう

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

haskell - Lens のターゲットを条件付きで変更する

ゲームのルールで移動が許可されている場合、入力とボードから更新されたボードを生成する関数があります。

GameStateボードは、いくつかの追加データを使用して型にラップされます。

moveレンズを使用して、値が得られる場合にゲームの状態でボードを更新したいと思いJustます。ヘルパー関数でこれを行うことができます:

Lensただし、提供された関数が a を返す場合にのみa のターゲットを変更するコンビネーターがあるかどうか疑問に思ってい ますJust。演算子を見つけました?~が、左側の部分性を処理します。

これを達成できる(おそらくより一般的な)コンビネーターはありますか、またはこれを簡潔で慣用的な方法で表現する別の方法はありますか?

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

haskell - GADT 用の makeLenses (Haskell)

makeLensesGADTに相当するものはありますか? 次のような単純なものがある場合GADT:

コンストラクターとフィールド名のリストを渡してレンズを自動的に生成する方法はありますか?

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

scala - Play フレームワークでのレンズのサポート

Play フレームワークにはデフォルトでレンズのサポートが含まれていませんか? Monocoleや Scalazのようなもの。おそらく、私が気付いていない推奨される代替アプローチが (その理論的根拠と共に) あるかもしれません。

シナリオ: ケース クラスの不変で深くネストされたオブジェクトがあり、オブジェクトのどこかでフィールドが変更された状態でそれをコピーしたいと考えています。

Monocole のようなレンズ ライブラリと同じように、多くの定型文を必要とせずに、これを非常に簡単に行うことを具体的に検討しています。

Play フレームワークにサポートが組み込まれていないことに驚いています。そうでない場合、このサポートに関する既知の計画はありますか?

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

haskell - Map のようなコンテナ内でレンズを合計型に定義する方法は?

Lens'必要なものを手動で定義できます:

そして、それは次のように機能します:

定義が合法であることを確認しました。

質問:と を使用して定義できますか?llat_Left

たぶん、ある種のprismToLens :: Prism' a b -> Lens' (Maybe a) (Maybe b)があれば、できるでしょうat k . prismToLens _Left。それでもprismToLens、意味があるかどうかはわかりませんか?Hoogle はlens:(

EDITは、第三法則が常に成り立つとは限らないようです。Keyに変更すると、反例を簡単に見つけることができますBool。しかし、私のアプリケーションでは、Mapは実際には依存しています。つまり、 sum 分岐はキーに依存しているため、Lens法則が成り立つはずです ( にアクセスするfooと、それが存在するかどうかはまったくわかりLeftません)。

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

haskell - Haskell のレンズと Clojure の破壊の類似点と相違点は何ですか?

仮定:

  • ネストされた JSON 文字列を解析したい。
  • Haskell は型システムを使用して問題を解決することを推奨しており、Clojure は型システムを避け、データ構造を使用して問題を解決することを好みます。
  • 両方の言語でこのプロセスがdestructuringと呼ばれていることは承知していますが、Clojure では別の名前がありませんが、Haskell ではこれもusing a lensと呼ばれているため、Clojure を 1 つのdestructuringと呼んでいます。の上

Haskell で次のようなレンズ を作成できることがわかります。

その目的は、データ構造healthから値を取得することです。game

Clojure では、次のような構造化を行うことができます。

目的は、ネストされた構造から名前、ページなどのネストされた値を取得することです。

どちらの場合も、ネストされた構造から値を再利用可能に取得するメカニズムを考え出しています。

私の質問は、Haskell のレンズと Clojure の破壊の類似点と相違点は何ですか?