Maybe there could be added a derive macro for Semigroup trait which would do combine per field like is done with tuples. (Also why not add it also for same-sized arrays?)
I noticed that Min and Max implement Semigroup for any type that has Ord but on the other hand all others like All, Any and Product are implemented only for numeric types. Why not implement Semigroup for Product for any type which can be Multiplied with itself (and similarly for All and Any)? And maybe Semigroup could be implemented as an addition for any type which has Add or maybe better add some Sum wrapper type which would do that.
Maybe there could be added a derive macro for
Semigrouptrait which would docombineper field like is done with tuples. (Also why not add it also for same-sized arrays?)I noticed that
MinandMaximplementSemigroupfor any type that hasOrdbut on the other hand all others likeAll,AnyandProductare implemented only for numeric types. Why not implementSemigroupforProductfor any type which can beMultiplied with itself (and similarly forAllandAny)? And maybeSemigroupcould be implemented as an addition for any type which hasAddor maybe better add someSumwrapper type which would do that.