以下は、 Argonaut のレンズ ドキュメントの例の簡略版です。
import argonaut._, Argonaut._
val obj: Json = Parse.parseOption("""{"a":{"b":"x","c":2}}""").get
val lens1 = jObjectPL >=> jsonObjectPL("a") >=>
jObjectPL >=> jsonObjectPL("b") >=> jStringPL
lens1.mod(_ + "y", obj)
// res0: argonaut.Json = {"a":{"b":"xy","c":2}}
数値フィールドで同様のことを行うにはどうすればよいですか? たとえば、上記1
の数値に加算して、次obj
の結果を得たいとします。
// res1: argonaut.Json = {"a":{"b":"x","c":3}}
私の最初の試みは
val lens2 = jObjectPL >=> jsonObjectPL("a") >=>
jObjectPL >=> jsonObjectPL("c") >=> jNumberPL
lens2.mod(_ + 1, obj)
しかし、この最後の行はコンパイルされません。