1

2 レベルのマップに値を設定したいと思います。つまり、「外側の」マップのキーの値であるマップのキーに設定します。通常の Map の場合、次のようなものを使用できますがm & at 42 ?= "value" 、 2 をネストする方法が見つかりませんでしatた レンズを使用してそのようなネストされた値を設定する最も簡単な方法は何ですか?

4

2 に答える 2

3

ユーザーtrapdoorは、より良い解決策があることを示しました-http ://juick.com/qrilka/2602819#19、それはレンズライブラリにあります: non

于 2013-12-04T12:09:09.387 に答える
2

一種の、_Just利用可能なキーがない場合は操作を行わないプリズムを使用できます。これには、2 層下のキーを作成できないという残念な結果があります。しかし、例として

at2 :: Ord k => k -> k -> IndexedTraversal' k (Map k (Map k v)) (Maybe v)
at2 k1 k2 = at k1 . _Just . at k2
于 2013-12-04T05:43:10.927 に答える