Haskell 镜头-traverseInit怎么了?
在早期版本中,有一个函数Haskell 镜头-traverseInit怎么了?,haskell,haskell-lens,Haskell,Haskell Lens,在早期版本中,有一个函数transverseInit,用于操作列表的各个部分。它已经被删除了,我想现在有一个替代方案,但我不能完全找到它 我会怎么做 >>> traverseInit +~ 1 $ [1,2,3] [2,3,3] traverseInit被更通用的from替换,因此现在它可以与任何类似序列的类型一起工作,从而允许访问其右端 ghci> [1,2,3] & _init.traverse +~ 1 [2,3,3] 请注意,\u init返回一个遍历
transverseInit
,用于操作列表的各个部分。它已经被删除了,我想现在有一个替代方案,但我不能完全找到它
我会怎么做
>>> traverseInit +~ 1 $ [1,2,3]
[2,3,3]
traverseInit
被更通用的from替换,因此现在它可以与任何类似序列的类型一起工作,从而允许访问其右端
ghci> [1,2,3] & _init.traverse +~ 1
[2,3,3]
请注意,\u init
返回一个遍历的
,而不是遍历的
,允许您替换整个子列表,可能会更改其长度。在这个例子中,我必须再次遍历以查看元素。(\u init
恰好是一个仿射遍历,这意味着它永远不会返回多个子列表,但在lens
的词汇表中无法表达。)
Control.Lens.Cons
包括对列表的类似遍历,以及对列表和的遍历