問題タブ [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.
haskell - レンズを使用してタプルのフィールドを選択する (Haskell)
以下は動作しません。どうすれば修正できますか?
私が欲しかったのは(2, 3)
.
haskell - 「オブ」レンズの使い方は?(ハスケル)
私は書きたい:
レンズを使用。レンズを使いたいのですがminimumOf
、種類から使い方がわかりません。
私は次のようなものを探しています
しかし、それはチェックをタイプしません:
functional-programming - purescript-lens 合成タイプエラー
ネストされたレコードのプロパティを更新するために purescript-lens を使用しようとしています。ただし、レンズを作成してプロパティを取得すると、次の型エラーが発生します。
私はレンズとピュアスクリプトに比較的慣れていないので、おそらく単純で明白なものです。
このエラーを生成する関連コードは次のとおりです (はい、purescript-thermite-todomvc に基づいています)。
更新しようとしているプロパティは st.item.description で、上記のエラーは「updateState (NewItem...」で始まる行を参照しています。不思議なことに、次の行でも同じエラーが報告されています。
型エラーを解決する方法についてのアイデアはありますか?
ありがとう
haskell - Lens のターゲットを条件付きで変更する
ゲームのルールで移動が許可されている場合、入力とボードから更新されたボードを生成する関数があります。
GameState
ボードは、いくつかの追加データを使用して型にラップされます。
move
レンズを使用して、値が得られる場合にゲームの状態でボードを更新したいと思いJust
ます。ヘルパー関数でこれを行うことができます:
Lens
ただし、提供された関数が a を返す場合にのみa のターゲットを変更するコンビネーターがあるかどうか疑問に思ってい
ますJust
。演算子を見つけました?~
が、左側の部分性を処理します。
これを達成できる(おそらくより一般的な)コンビネーターはありますか、またはこれを簡潔で慣用的な方法で表現する別の方法はありますか?
haskell - GADT 用の makeLenses (Haskell)
makeLenses
GADTに相当するものはありますか? 次のような単純なものがある場合GADT
:
コンストラクターとフィールド名のリストを渡してレンズを自動的に生成する方法はありますか?
scala - Play フレームワークでのレンズのサポート
Play フレームワークにはデフォルトでレンズのサポートが含まれていませんか? Monocoleや Scalazのようなもの。おそらく、私が気付いていない推奨される代替アプローチが (その理論的根拠と共に) あるかもしれません。
シナリオ: ケース クラスの不変で深くネストされたオブジェクトがあり、オブジェクトのどこかでフィールドが変更された状態でそれをコピーしたいと考えています。
Monocole のようなレンズ ライブラリと同じように、多くの定型文を必要とせずに、これを非常に簡単に行うことを具体的に検討しています。
Play フレームワークにサポートが組み込まれていないことに驚いています。そうでない場合、このサポートに関する既知の計画はありますか?
haskell - Map のようなコンテナ内でレンズを合計型に定義する方法は?
Lens'
必要なものを手動で定義できます:
そして、それは次のように機能します:
定義が合法であることを確認しました。
たぶん、ある種のprismToLens :: Prism' a b -> Lens' (Maybe a) (Maybe b)
があれば、できるでしょうat k . prismToLens _Left
。それでもprismToLens
、意味があるかどうかはわかりませんか?Hoogle はlens
:(
EDITは、第三法則が常に成り立つとは限らないようです。Key
に変更すると、反例を簡単に見つけることができますBool
。しかし、私のアプリケーションでは、Map
は実際には依存しています。つまり、 sum 分岐はキーに依存しているため、Lens
法則が成り立つはずです ( にアクセスするfoo
と、それが存在するかどうかはまったくわかりLeft
ません)。
haskell - Haskell のレンズと Clojure の破壊の類似点と相違点は何ですか?
仮定:
- ネストされた JSON 文字列を解析したい。
- Haskell は型システムを使用して問題を解決することを推奨しており、Clojure は型システムを避け、データ構造を使用して問題を解決することを好みます。
- 両方の言語でこのプロセスがdestructuringと呼ばれていることは承知していますが、Clojure では別の名前がありませんが、Haskell ではこれもusing a lensと呼ばれているため、Clojure を 1 つのdestructuringと呼んでいます。の上
Haskell で次のようなレンズ を作成できることがわかります。
その目的は、データ構造health
から値を取得することです。game
Clojure では、次のような構造化を行うことができます。
目的は、ネストされた構造から名前、ページなどのネストされた値を取得することです。
どちらの場合も、ネストされた構造から値を再利用可能に取得するメカニズムを考え出しています。
私の質問は、Haskell のレンズと Clojure の破壊の類似点と相違点は何ですか?