ブログの更新頻度も上げていくつもりです。
Lens
Lensはあるフィールドに対するgetterとsetterを持つ。
コードにするとこんな感じ。
見てわかるとおり、lgetはgetで、lsetはassocで十分なのだ。
Lensの特徴
getとsetがあればmodifyが定義できる。
Clojureにはupdate-inがある。
Lensは合成が可能だ。
Clojureの{get, assoc, update}-in関数は複数のKeywordをとることで、ネストしたレコードに対しても有効です。
LensはStateモナドと組み合わせると素敵です。
更新途中の状態を取得することは出来ないけれど、Clojureにはアローマクロが存在します。
KeywordがLensだということを意識すれば、Lensの考え方を応用することが出来ますね。
0 件のコメント:
コメントを投稿