レンズを使用し始めていますが、今まで私が書いているコードベースの具体的な部分では使用できませんでした。私の目的は、既存のものの1つの中に新しいノードを追加することによって、Data.Treeにあるようなバラのツリー構造を更新することです。それはそのようになりますので、そうするために、私は、それが一意のIDと各ノードを識別するために理にかなっていることを考えた: type MyTree = Tree
私は現在、ライブラリを使って簡単な関数を書くことによってレンズライブラリを学習しています。残念なことに、私はコンパイラのエラーが生成されて混乱しているので、以下の関数dmgの最初の2つの関数は正しくコンパイルされますが、最後は失敗するのはなぜですか? import Control.Lens
type Health = Int
type Damage = Int
data Card = C
ことでレンズのStateモナドと使用を理解しようと、私はシンプルなカウンタのレンズの驚くほど平凡な定義に到着したものの: self :: ASetter s s s s
self = ($)
incrementUsingLens :: State Int()
incrementUsingLens = self %= (+1)
私の場合は type ASetter s t a b = (
私は拡張可能なレコードライブラリで遊んでいますが、私は、Symbolキーがキーのリストにあるかどうかに基づいてLensまたはTraversalのいずれかとして機能する関数fieldを書きたいと思っています。型家族が与えられます。 type family LensOrTraversal key keys s t a b where
LensOrTraversal key '[] s t a