問題タブ [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.
scalaz - Scalaz Lens セット操作の連鎖
私はscalaz7レンズを学ぼうとしています。セット操作をチェーンするより良い方法はありますか?
アップデート:
答えは状態モナドを使用することかもしれないと感じていますが、これが機能しているように見える理由はほとんどわかりません。もっときちんとした方法があるかどうか知りたいです。
haskell - レンズとファンクターを組み合わせるにはどうすればよいですか?
私はlens
Haskell のライブラリに慣れようとしていますが、いくつかの単純な問題に苦労していることに気づきました。たとえば、(便宜上)次のタイプがあるat
としましょう(_1
少なくとも、これが私が理解している方法です):
これらのレンズを次のタイプのレンズに組み合わせるにはどうすればよいですか。
ruby - これはどのようなレンズコンビネータですか?
Rubyでレンズコンビネータを作成していますが、一般的に受け入れられている名前がわかりません。未知の関数は、同じソース タイプとターゲット タイプ ( Benjamin C. Pierce の用語を使用) を持つ 2 つのレンズを構成し ます。これはハッシュ マップです。未知の関数は、これらの 2 つのレンズを受け取り、元のレンズと同じソース タイプとターゲット タイプを持つ新しいレンズを返します。
次のようになります (Ruby 構文):
私が構築しようとしているコンビネータの図は、このプレゼンテーションのスライド 18 にあります(スライドのタイトルは「Merge?」です)。
Haskell のlens docs (私が理解できる小さな部分) を見てきましたが、これがどのコンビネータかわかりません。
上記の unknown_function の標準名は何ですか? このレンズに標準的な名前がない場合、それを作るために構成できる標準的な機能がいくつかありますか? そうでない場合は、おそらくマージと呼ぶことにします。
haskell - レンズで関数型チェックを取得する方法
レンズを理解するためにこの投稿を読んでいます。最初に、次のような型シノニムを定義します。
const は次のように定義されます。
get
関数はどのように型チェックを行いますか:
getConst の型は次のようなものです。
私が推測するタイプr Const
は次のようなものです:
getConst
では、とr Const
get の両方が を与えるためにどのように構成されるのでしょうa -> b
か?
scala - scala shapeless レンズが機能しない
私のプロジェクトでは、ケース クラスのインスタンスである不変オブジェクトに対してネストされた更新を実行する必要がある状況に遭遇しました。
最初は、ケース クラスによって提供される関数を使用したかったcopy
のですが、レンズに出くわしました。実装を調べてShapeless
、のScalaz
レンズを使用しようと決めたShapeless
ので、依存関係を取得"com.chuusai" % "shapeless" % "2.0.0" cross CrossVersion.full
して自分に追加し、次build.sbt
の入手可能な例に基づいて簡単なものを書き込もうとしましたGitHub
: https://github.com/milesabin/shapeless/wiki /Feature-overview:-shapeless-2.0.0#boilerplate-free-lenses-for-arbitrary-case-classes .
しかし、コンパイル中に次のようなエラーが発生します。
wiki から例をコピーして貼り付けたので、おそらく明らかな何かが欠けています。
編集: Travis からのコメントの後、https://github.com/jrudolph/sbt-dependency-graphspray-routing
を使用してプロジェクトの依存関係グラフを生成しましたが、既にshapeless
ライブラリが含まれていることがわかりました:
そこで、依存関係を削除し、https://github.com/milessabin/shapeless/blob/scala-2.9.x/examples/src/main/scala/shapeless/examples/lenses.scalaの例を試してみましたが、正しく動作するようになりました.
haskell - レンズを2回使う
lens
特定の問題のためにライブラリを使用するのに苦労しています。渡ろうとしている
- 更新されたデータ構造
- その更新された構造の一部に焦点を合わせたレンズ
別の関数に、g
. g
データ構造からの共有情報と一部の情報が必要なため、レンズとデータ構造の両方を渡します。(それが役立つ場合、データ構造には結合確率分布に関する情報が含まれていますが、g
いずれかの限界でのみ機能し、私が見ている限界を知る必要があります。2 つの限界の唯一の違いは、定義の残りの部分との平均です。データ構造で共有されています)。
私の最初の試みはこのように見えました
しかし、更新用およびゲッター用であるf
と推測されるため、コンパイル中に失敗します。Identity
Const Double
私がやりたいことを達成するための最良の方法は何ですか? 次のいずれかを実行できると想像できます。
- レンズのコピーを作成して、タイプの推論がケースごとに異なるようにする
- 更新された構造とレンズを渡すのではなく、元の構造と変更された値を返すレンズを渡します (レンズが参照する構造の部分のみを更新する場合)。
- 関数/データ構造のより良い設計選択を行う
- まったく違うもの
助けてくれてありがとう!