public static A Sum <MonoidA, A>(this Seq <A> list) where MonoidA : struct, Monoid <A> => mconcat <MonoidA, A>(list.AsEnumerable());