out package:lens

Use a Prism as a kind of first-class pattern.
outside :: Prism s t a b -> Lens (t -> r) (s -> r) (b -> r) (a -> r)
Given a pair of prisms, project sums. Viewing a Prism as a co-Lens, this combinator can be seen to be dual to alongside.
Transform a Lens, Fold, Getter, Setter or Traversal to evaluate its argument according to a given Strategy in parallel with evaluating.
throughout rdeepseq traverse :: Traversable t => Strategy a -> Strategy [a]