私はレンズを試してみたかったのですが、Monocle ライブラリは (私の初心者の観点からは) これらの空想的なボイラープレートのないすべてのものに適しているように見えました@Lenses
。残念ながら、初心者向けの学習教材はほとんどまたはまったくないことがわかりました (バニラ Scala の FP の基本は知っていますが、Scalaz は知りません)。公式のチュートリアルには簡単な例 (および/またはその結果) がなく、非常に複雑な Scalaz ライブラリが混在しています。マップへのアクセスなどの簡単なタスクは、最初のページで説明されると思われます。
次のスニペットがあります。
@Lenses case class House(presentsDelivered: Int)
type Houses = Map[(Int, Int), House]
@Lenses case class Town(houses: Houses)
@Lenses case class Santa(x: Int, y: Int)
@Lenses case class World(santa: Santa, town: Town)
私はat
とを見ましindex
たが、単純な例はありません (applyOptional
ボイラープレートが必要な奇妙な [私にとっての魔法] の答えだけです)。houses
で地図を更新したいTown
。私はこの精神で何かを試みていました:
(World.town ^|-> Town.houses ^|-> index((x, y)) ^|-> House.presentsDelivered)
.modify { _ + 1 }(world)
これは構文的に間違っていますが、私がやりたかったことは明らかだと思います(指定された座標での変更)presentsDelivered
。私の質問は、マップにアクセスするためにパーツを変更する方法ですか?House
x, y
index
ヘルプ、手がかり、初心者向けの学習教材のヒントは大歓迎です。