sonuçlar birleştirilerek aşağıdaki:Haskell - Ben böyle bir şey başarmak için çalışıyorum ayrı lensler
combinedJson == ["hello world", "hello everyone", "hello 42"]
Ancak, kombinasyon operatörleri ben oldum:
jsonStr = "{\"a\": \"hello\",
\"b\": [\"world\", \"everyone\", \"42\"]}"
someALens = ...
someBLens = ...
combinedJson = jsonStr ... someALens ... someBLens
sonucu almak için (<>~
gibi) bir objektif üzerinde mappend (veya başka bir şekilde birleştirmek) için bir ayar değeri gerektiriyor gibi görünüyor. Birden çok mercekten gelen değerleri birleştirebilen bileşik bir lensi nasıl oluşturabilirim?
Sanırım http://stackoverflow.com/questions/17552835/combining-getters-into-a-fold aradığınız şeydir. Monoid örneğini yonder üzerinde açıklandığı şekilde tanımladığınızda, "kombineJson = jsonStr^.. (someALens <> someBLens)" yazabilirsiniz. – hao
@haoformayor, örneğin, daha yeni olan “lens” sürümlerinde _included_. Sadece '^ .. (bazılarında <> someBLens) bir cevap verin. – leftaroundabout
İhtiyacım olan buydu. Teşekkürler! Birisi bir cevap olarak koyduğunda, doğru olarak işaretlerim. –