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

json - エラー処理付きの Aeson と Lenses

私はレンズの魔法に非常に慣れていないので、これに問題があります。

参照: https://www.fpcomplete.com/user/tel/lens-aeson-traversals-prisms

JSON オブジェクトは、次の方法でトラバースできます。

次のような JSON オブジェクトの場合:

Maybe モナドは全体で使用されているため、「アクセサ」が失敗すると、Nothing.

どのアクセサーが失敗したかがわかるように、失敗も伝播したいと思います。

私が考えることができる唯一の方法は、アクセサーの配列を渡し、それらを順番に適用し、失敗した時点でエラーを返すことです。このようなもの:

だからこれで:

これを行うよりエレガントな方法はありますか?lens を使用するために、Either-ish モナドを作成すると、次のようになりwithFailureます。

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

haskell - Haskell のレンズを使用した慣用的なスタイル

レンズについては、まだ完全には理解できていません。

これを行うためのよりレンズの慣用的な方法はありますか:

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

haskell - コントロールレンズを使用して文字列を大文字にする方法は?

私はlensパッケージで遊んでいて、レンズだけを使って文字列を大文字にしようとしています。toUpper基本的に、すべての単語の最初の各要素を呼び出したいと思います。それはそれで簡単に思えますが、私はそれを行う方法をまったく理解できません。traversable が必要ですか? スペースなどで分割するにはどうすればよいですか...

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

haskell - 古いレンズ バージョンの「makeIso」を新しいバージョン (4.3) に置き換えるにはどうすればよいですか?

パッケージmakeIsoから使用するコードがいくつかあります:lens

lensこのコードを 4.3 バージョンのパッケージで使用したいと思います。このバージョンには欠けてmakeIsoおり、変更ログには次のように記載されています。

makeIsosを優先して削除されました。これらの各関数は、適切な場合に構築されます。makePrismsmakeLensesIsos

makeIsosスペルミスだと思うような機能はなかったので、意味はmakeIso. だから私は置き換えようとしましmakeIsomakeLensesが、それは foo を作成しませんIso

正しい交換方法はmakeIso

ご協力いただきありがとうございます

0 投票する
0 に答える
263 参照

haskell - レンズと拡張効果の使い方

lensextensible-effectsを使用して簡単な例を作成したいと思います。
エラーメッセージは、パラメータ付きの型クラスのために型が曖昧でHasObj xあり、GHCがどこから来たのか理解できないと言っていますpos.
makeClassy共通のデータ関数で抽象データ型を定義するのに非常に便利なので、実際のプロジェクトで必要です。

私の質問は次のとおりです。どうすればそれを機能させることができますか?
または、データ型からレンズを定義して Eff.State で使用する方法はありますか?

エラー メッセージ: