Ste*_*han 8 haskell haskell-lens
在Haskell的镜头库中,ix
并且element
都可以使用Int an来例如在某个索引处读取或写入列表元素,就像这样
ghci> [1..10] ^? ix 4
Just 5
ghci> [1..10] & ix 4 .~ 1
[1,2,3,4,1,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
同样地:
ghci> [1..10] ^? element 4
Just 5
ghci> [1..10] & element 4 .~ 1
[1,2,3,4,1,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
element
和之间有什么区别ix
?
pha*_*dej 11
有了ix
你可以索引不仅数量,但通过在地图如关键.该element
索引Traverse
的顺序.
?> let m = Map.fromList [("foo", 'f'), ("bar", 'b')]
?> m ^? ix "foo"
Just 'f'
?> m ^? element 0 -- Map is ordered container!
Just 'b'
Run Code Online (Sandbox Code Playgroud)
例如,差异更明显 IntMap
?> let im = IntMap.fromList [(1, "one"), (2, "two")]
?> im ^? ix 1
Just "one"
?> im ^? element 1
Just "two"
Run Code Online (Sandbox Code Playgroud)