使用 `lens` 相当于 `span` 是什么?

What is the equivalent to `span` using `lens`?

假设我有

data SumType = A | B | C

list = [A, B, B, A, C, A]

(as, rest) = span (\case A -> True; _ -> False) list

假设我有棱镜 _A,有没有办法用 lens 更简洁地写这个?

你可以说

(as, rest) = break (isn't _A) list

isn'tControl.Lens.Prism 中定义。不幸的是似乎没有相应的功能is' p = not . isn't p,虽然

(as, rest) = span (isRight . matching _A) list

也可以。