Допустим, у меня есть
data SumType = A | B | C list = [A, B, B, A, C, A] (as, rest) = span (\case A -> True; _ -> False) list
Если у меня есть призма _A, есть ли способ написать это более кратко, используя lens?
_A
lens
Можно сказать, что
(as, rest) = break (isn't _A) list
isn't определено в Control.Lens.Prism .К сожалению, похоже, нет соответствующей функции is' p = not . isn't p, хотя
isn't
is' p = not . isn't p
(as, rest) = span (isRight . matching _A) list
также будет работать.