simon.vergauwen
inline fun <A, reified B> Fold<A, B>.fold(M: Monoid<B> = monoid(), a: A): B = foldMap(M, a, ::identity)
inline fun <A, reified B> Fold<A, B>.fold(a: A, M: Monoid<B> = monoid()): B = foldMap(M, a, ::identity)