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

问题描述 投票:4回答:1

让我说我有

data SumType = A | B | C

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

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

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

haskell lens
1个回答
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

也会有用。

© www.soinside.com 2019 - 2024. All rights reserved.