A Fold a c is a generalization of something Foldable. It allows
you to extract multiple results from a container. A Foldable container
can be characterized by the behavior of
foldMap :: (Foldable t, Monoid m) => (c -> m) -> t c -> m.
Since we want to be able to work with monomorphic containers, we could
generalize this signature to forall m. Monoid m => (c -> m) -> a -> m,
and then decorate it with Accessor to obtain

The findOf function takes a Lens (or Getter, Iso, Fold, or Traversal),
a predicate and a structure and returns the leftmost element of the structure
matching the predicate, or Nothing if there is no such element.