遍历

一个 Traversal' s a 表明 s 里面有 0 到多个 as。

toListOf::Traversal' s a -> (s -> [a])

任何类型的 t 都是 Traversable 自动拥有 traverse::Traversal (t a) a

我们可以使用 Traversal 来设置或映射所有这些 a

> set traverse 1 [1..10]
[1,1,1,1,1,1,1,1,1,1]

> over traverse (+1) [1..10]
[2,3,4,5,6,7,8,9,10,11]

一个 f::Lens' s a 说,在 s 里面只有一个 a。一个 g::Prism' a b 说在 a 中有 0 或 1 个 bs。组成 f . g 给了我们一个 Traversal' s b 因为跟随 f 然后 g 显示了 s 中 0 到 1 的 bs。