我要转换这行代码map (^?! ix 0) [[0, 1], [4, 5], [9, 1]]
完全使用镜头,例如 [[0, 1], [4, 5], [9, 1]] & each . ix 0
.但是,类型不匹配。这样做的正确方法是什么?
最佳答案
使用folded
:
Prelude Control.Lens> [[0, 1], [4, 5], [9, 1]] ^.. folded . ix 0
[0,4,9]
适用于任何
Foldable
.此外,如果您计划始终提取第一个元素,使用
_head
可能会更清楚。遍历 Control.Lens.Cons
而不是 ix
.[[0, 1], [4, 5], [9, 1]] ^.. folded . _head
关于haskell - 使用镜头作为 `map`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26686922/