假设我有
data SumType = A | B | C
list = [A, B, B, A, C, A]
(as, rest) = span (\case A -> True; _ -> False) list
假设我有棱镜_A
,有没有一种方法可以使用lens
更加简洁地写出来?
答案 0 :(得分:6)
你可以说
(as, rest) = break (isn't _A) list
isn't
在Control.Lens.Prism中定义。不幸的是,似乎没有相应的功能is' p = not . isn't p
,尽管
(as, rest) = span (isRight . matching _A) list
也可以。