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

haskell - 2 つの単純なレンズの結果を 1 つに結合する方法

以下のように定義されたデータ型があるとします。

Registerここで、a から aに焦点を合わせるレンズを定義したいとしますWord16。この関数は次のようになります。

( Word8Word16shiftL、および.&.Data.Wordおよびからのものであり、ソース コードの冒頭でData.Bits有効にしています。)RankNTypes

ただし、このコードは機能しません。完全な型定義には 4 つの型パラメーターがあり、単純なとして機能するLensよりも複雑になる可能性があると思います。Lens'Monad

では、上記の効果をどのように達成できますか?

ありがとう。

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

haskell - レンズ ライブラリを使用して、インデックスによってリストからアイテムを削除する方法は?

たとえば、次のようなレンズを使用してリストの 4 番目の項目を表示できます。

リストから 4 番目の項目を表示する代わりに削除するために、「プレビュー」を置き換えることができるものはありますか? 返されるリストは元のリストと同じである必要があり、4 番目の項目が削除されます。

あるいは、filtered 関数を使用してこれを行う方法があるかもしれません。

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

haskell - fclabels の「左」レンズを使用するとタイプ エラーが発生する

fclabels をテストするための最小限の例を作成しました。レンズを使用して、Either 値から「正しい」値を取得します。なぜこれが失敗するのですか?何かを含めるのを逃しましたか?

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

swift - レンズを Swift プロパティに

Swift のクラスのプロパティの getter/setter 関数ペアを自動的に生成する方法はありますか? Haskell のレンズのようなものです。

私は次のことを手動で行うことができました:

しかし、それは私が望むよりも冗長で退屈で、エラーが発生しやすくなります。不足している組み込み機能はありますか?

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

haskell - 指定されたインデックスを持つ要素のみをトラバースする Traversable to Traversable

次の関数を構築することは可能だろうか

が使用さpureれる i 番目を除くすべての要素を使用v -> a vします (指定されたインデックスを持つ値のトラバーサル)。

基本的に、すべてのトラバーサブルに対して次の関数を一般化しようとしています。それとも無理ですか?Traversable は常にZipperに変換でき、一般化できると考えました。

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

haskell - 型変数はそのスコープをエスケープします

xml-lens(パッケージから) lens 引数を指定して、関数をリファクタリングしようとしています。型量指定子について何かが欠けています。ここで何が起こっているのですか?

興味深いことに、この署名は機能します。

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

haskell - トラバースを使用した Haskell レンズのチュートリアル

私はこのチュートリアルに従おうとしています: http://blog.jakubarnold.cz/2014/08/06/lens-tutorial-stab-traversal-part-2.html

ghci にロードする次のコードを使用しています。

そこから、次のような単純なものが機能します。

ただし、次のステップを実行しようとすると機能しません。

私は得る:

Lens には Functor の型制約があり、traverse には Applicative として f により制約された型制約があることがわかります。これが正確に機能しないのはなぜですか? また、ブログのチュートリアルで機能することが示唆されているのはなぜですか?