問題タブ [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 投票する
1 に答える
342 参照

scalaz - Scalaz Lens セット操作の連鎖

私はscalaz7レンズを学ぼうとしています。セット操作をチェーンするより良い方法はありますか?

アップデート:

答えは状態モナドを使用することかもしれないと感じていますが、これが機能しているように見える理由はほとんどわかりません。もっときちんとした方法があるかどうか知りたいです。

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

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

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

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

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

ruby - これはどのようなレンズコンビネータですか?

Rubyでレンズコンビネータを作成していますが、一般的に受け入れられている名前がわかりません。未知の関数は、同じソース タイプとターゲット タイプ ( Benjamin C. Pierce の用語を使用) を持つ 2 つのレンズを構成し ます。これはハッシュ マップです。未知の関数は、これらの 2 つのレンズを受け取り、元のレンズと同じソース タイプとターゲット タイプを持つ新しいレンズを返します。

次のようになります (Ruby 構文):

私が構築しようとしているコンビネータの図は、このプレゼンテーションのスライド 18 にあります(スライドのタイトルは「Merge?」です)。

Haskell のlens docs (私が理解できる小さな部分) を見てきましたが、これがどのコンビネータかわかりません。

上記の unknown_function の標準名は何ですか? このレンズに標準的な名前がない場合、それを作るために構成できる標準的な機能がいくつかありますか? そうでない場合は、おそらくマージと呼ぶことにします。

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

haskell - レンズで関数型チェックを取得する方法

レンズを理解するためにこの投稿を読んでいます。最初に、次のような型シノニムを定義します。

const は次のように定義されます。

get関数はどのように型チェックを行いますか:

getConst の型は次のようなものです。

私が推測するタイプr Constは次のようなものです:

getConstでは、とr Constget の両方が を与えるためにどのように構成されるのでしょうa -> bか?

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

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の例を試してみましたが、正しく動作するようになりました.

0 投票する
3 に答える
340 参照

haskell - レンズを2回使う

lens特定の問題のためにライブラリを使用するのに苦労しています。渡ろうとしている

  1. 更新されたデータ構造
  2. その更新された構造の一部に焦点を合わせたレンズ

別の関数に、g. gデータ構造からの共有情報と一部の情報が必要なため、レンズとデータ構造の両方を渡します。(それが役立つ場合、データ構造には結合確率分布に関する情報が含まれていますが、gいずれかの限界でのみ機能し、私が見ている限界を知る必要があります。2 つの限界の唯一の違いは、定義の残りの部分との平均です。データ構造で共有されています)。

私の最初の試みはこのように見えました

しかし、更新用およびゲッター用であるfと推測されるため、コンパイル中に失敗します。IdentityConst Double

私がやりたいことを達成するための最良の方法は何ですか? 次のいずれかを実行できると想像できます。

  1. レンズのコピーを作成して、タイプの推論がケースごとに異なるようにする
  2. 更新された構造とレンズを渡すのではなく、元の構造と変更された値を返すレンズを渡します (レンズが参照する構造の部分のみを更新する場合)。
  3. 関数/データ構造のより良い設計選択を行う
  4. まったく違うもの

助けてくれてありがとう!