code: public static <A> Lens.Simple<Iterable<A>, Maybe<A>> head() {
          return simpleLens(Head::head, (s, maybeB) -> {
              Iterable<A> tail = Tail.tail(s);
              return maybeB.fmap(b -> cons(b, tail)).orElse(tail);
          });
      }
docs: A lens focusing on the head of a given {@link Iterable}.
  <p>
  Note that this lens is effectively lawful, though difficult to prove since there is no
  useful equality implementation for {@link Iterable}.
  
  @param <A> the Iterable element type
  @return a lens focusing on the head element of an {@link Iterable}