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

use*_*558 4 haskell haskell-lens

假设我有

data SumType = A | B | C

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

(as, rest) = span (\case A -> True; _ -> False) list
Run Code Online (Sandbox Code Playgroud)

假设我有棱镜_A,是否有一种方法可以更简洁地使用它来书写lens

Pau*_*son 6

你可以说

(as, rest) = break (isn't _A) list
Run Code Online (Sandbox Code Playgroud)

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

(as, rest) = span (isRight . matching _A) list
Run Code Online (Sandbox Code Playgroud)

也可以。

  • “ Control.Lens.Fold.has”作为对“不是”的否定。 (2认同)