假设我有一个像
at _
这样的镜头,需要一些Maybe a
:import Data.Map as M
m = M.fromList [(1,(2,3))]
--set 2nd element
m ^. at 1 .~ Just (4,5)
--gives fromList [(1,(4,5))]
m ^. at 1 .~ Nothing
--gives fromList ()
现在假设我想要与另一种镜头合成。这种镜头返回Maybe a
类型的值,这阻止了直接合成。
m ^. at 1 . _2 .~ Just 4
--error
-- I want to get M.fromList [(1,(2,4))]
这该怎么做才是正确的呢?