Je voudrais faire passer le test suivant:Comment puis-je réécrire un champ arbitrairement imbriqué dans une structure JSON en utilisant des lentilles Haskell?
it "can rewrite a field from an object" $ do
let _42 = 42 :: Int
nested = object [ "foo" .= _42, "baz" .= object [ "bar" .= _42 ] ]
]
rewrite "bar" nested `shouldBe` object [ "foo" .= _42
, "baz" .= object [ "bar" .= ("XXXXXXXX" :: Text) ]
]
Il semble que ce que je veux quelque chose de Control.Lens.Plated
comme rewrite comme ou transform, mais je ne peux pas réussir à le faire fonctionner, probablement en raison du manque une compréhension profonde de lentilles.
J'ai réussi à modifier une couche unique en utilisant le code suivant, mais je voudrais tirer parti de cela pour les champs imbriqués.
rewrite' field value = value & key field %~ const "XXXXXXXX"
Est-ce que '\ field -> transformer (réécrire le champ)' fait ce que vous voulez? (Juste une supposition - je ne suis pas un expert de la lentille non plus) – user2407038