public default <A, B> B foldr(final Function<A, Function<B, B>> fn, B b, _<F, A> as) { //foldr f z t = appEndo (foldMap (Endo . f) t) z return foldMap(Functions.<B>endoMonoid(), fn, as).apply(b); }