hol*_*lee 6 haskell lenses haskell-lens
假设我的镜头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 ()
Run Code Online (Sandbox Code Playgroud)
现在假设我想用另一个镜头来构图.这个镜头返回的事实Maybe a阻止我直接这样做.
m ^. at 1 . _2 .~ Just 4
--error
-- I want to get M.fromList [(1,(2,4))]
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
hao*_*hao 13
使用_Just棱镜在Map中设置值是否存在键.这就是棱镜的用途!
?> let m = fromList [(1, (2, 3))]
?> m & at 1 . _Just . _2 .~ 4
fromList [(1,(2,4))]
?> m & at 100 . _Just . _2 .~ 4
fromList [(1,(2,3))]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |