問題タブ [haskell-lens]

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 に答える
2110 参照

haskell - レンズを使用して複数のフィールドを読み取る

タイプを考えると

パターン マッチングを使用して、誰かの名前、ランク、およびシリアル番号を抽出できます。

または、レンズを使用して各部分を個別に抽出することもできます

データ構造の 1 回の走査で 3 つすべてを同時に抽出する方法はありますか?

Getterを組み合わせる何らかのGetter s a -> Getter s b -> Getter s (a,b)方法

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

haskell - レコード構文を使用して Haskell で OOP スタイルの「セッター」関数を作成する

私はレンズに関するチュートリアルを読んでいます。導入部で、著者は、lens標準の Haskell を使用して OOP スタイルの「セッター」/「ゲッター」を実装する方法のいくつかの例を示して、コンセプトの動機付けをしています。次の例で混乱しています。

User図 1 (下記) のように代数データ型を定義するとしましょう。NaiveLensチュートリアルでは、データ型と関数を使用して "セッター" 機能を実装できると (正しく) 述べていnameLensます (図 1 も参照)。使用例を図 2 に示します。

次の(やや明白な)関数が同じようにうまく機能するように見えるのに、なぜ「セッター」機能を実装するためにそのような精巧な構造(つまり、NaiveLensデータ型と関数)が必要なのか、私は困惑しています。 nameLensset' a s = s {name = a}

ただし、私の「明白な」関数が の一部であるラムダ関数に他ならないことを考えると、nameLens以下の構成を使用することには確かに利点があると思いますが、密度が高すぎてその利点が何であるかを確認できません。Haskell ウィザードの 1 人が理解を助けてくれることを願っています。

図 1 (定義):

図 2 (使用例):

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

haskell - xml-lens API の驚き: 関数の合成と旅行記

次の式は、その意図がどのように異なるのでしょうか? 以下の例では、実際にチェックを入力して異なる結果を生成していることに驚いています。

そして、それらが典型的な pom.xml ファイルでどのように機能するか:

どこ

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

arrays - 配列とインデックスの両方が State にある場合、配列のインデックス付けにレンズを使用する

状態モナドに配列と配列インデックスがあります。を使用して idx を読み取り、他の同様の修飾子useを使用して変更できます。+=

今、私は結合arridxてレンズを形成したいと考えていますarr[idx]

これどうやってするの?のコードは異なりData.Sequenceますか?

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

haskell - レンズ ライブラリを使用した複雑な機能の構築

lens引数を持ち、 type の 2 つの適用効果をmconcat持つMaybeモノイドになる関数を実装しようとしています(->) r。おそらくいくつかの基本が欠けているので、この問題を分解するための助けをいただければ幸いです。

次のように、同じ引数を渡さないように「ユーザー」コードを書きたいと思います。

これが私が試したものです。レンズなしのコンセプト:

レンズ付き:

しかし、コンパイルに失敗します:

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 により制約された型制約があることがわかります。これが正確に機能しないのはなぜですか? また、ブログのチュートリアルで機能することが示唆されているのはなぜですか?