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

时间:2019-04-28 09:53:34

标签: haskell lens

假设我有

data SumType = A | B | C

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

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

假设我有棱镜_A,有没有一种方法可以使用lens更加简洁地写出来?

1 个答案:

答案 0 :(得分:6)

你可以说

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

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

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

也可以。