問題タブ [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.
json - エラー処理付きの Aeson と Lenses
私はレンズの魔法に非常に慣れていないので、これに問題があります。
参照: https://www.fpcomplete.com/user/tel/lens-aeson-traversals-prisms
JSON オブジェクトは、次の方法でトラバースできます。
次のような JSON オブジェクトの場合:
Maybe モナドは全体で使用されているため、「アクセサ」が失敗すると、Nothing
.
どのアクセサーが失敗したかがわかるように、失敗も伝播したいと思います。
私が考えることができる唯一の方法は、アクセサーの配列を渡し、それらを順番に適用し、失敗した時点でエラーを返すことです。このようなもの:
だからこれで:
これを行うよりエレガントな方法はありますか?lens を使用するために、Either-ish モナドを作成すると、次のようになりwithFailure
ます。
haskell - Haskell のレンズを使用した慣用的なスタイル
レンズについては、まだ完全には理解できていません。
これを行うためのよりレンズの慣用的な方法はありますか:
haskell - コントロールレンズを使用して文字列を大文字にする方法は?
私はlens
パッケージで遊んでいて、レンズだけを使って文字列を大文字にしようとしています。toUpper
基本的に、すべての単語の最初の各要素を呼び出したいと思います。それはそれで簡単に思えますが、私はそれを行う方法をまったく理解できません。traversable が必要ですか? スペースなどで分割するにはどうすればよいですか...
haskell - 古いレンズ バージョンの「makeIso」を新しいバージョン (4.3) に置き換えるにはどうすればよいですか?
パッケージmakeIso
から使用するコードがいくつかあります:lens
lens
このコードを 4.3 バージョンのパッケージで使用したいと思います。このバージョンには欠けてmakeIso
おり、変更ログには次のように記載されています。
と
makeIsos
を優先して削除されました。これらの各関数は、適切な場合に構築されます。makePrisms
makeLenses
Isos
makeIsos
スペルミスだと思うような機能はなかったので、意味はmakeIso
. だから私は置き換えようとしましmakeIso
たmakeLenses
が、それは foo を作成しませんIso
。
正しい交換方法はmakeIso
?
ご協力いただきありがとうございます
haskell - レンズと拡張効果の使い方
lensとextensible-effectsを使用して簡単な例を作成したいと思います。
エラーメッセージは、パラメータ付きの型クラスのために型が曖昧でHasObj x
あり、GHCがどこから来たのか理解できないと言っていますpos
.
makeClassy
共通のデータ関数で抽象データ型を定義するのに非常に便利なので、実際のプロジェクトで必要です。
私の質問は次のとおりです。どうすればそれを機能させることができますか?
または、データ型からレンズを定義して Eff.State で使用する方法はありますか?
エラー メッセージ: