code: public static <S, A> State<S, A> state(Fn1<? super S, ? extends Product2<A, S>> stateFn) {
          return new State<>(stateFn.fmap(into(HList::tuple)));
      }
docs: Create a {@link State} from <code>stateFn</code>, a function that maps an initial state into a result and a final
  state.
  
  @param stateFn the state function
  @param <S>     the state type
  @param <A>     the result type
  @return the new {@link State} instance