Объектив: этот отфильтрованный имеет комбинатор уже существует? - PullRequest
0 голосов
/ 04 июня 2018

Этот комбинатор уже существует где-то в lens или в другой библиотеке?

filteredHas :: Lens.Fold s i -> Lens.IndexedTraversal' i s s
filteredHas fold f val =
    case val ^? fold of
    Nothing -> pure val
    Just proof -> Lens.indexed f proof val

Это полезно в тех случаях, когда можно изменить значение, только если оно имеетопределенное вспомогательное значение.

, т. е. он может заменить код типа

Lens.filtered (Lens.has part) %~ \x -> something (x ^?! part) x

на filteredHas part %@~ something.

...