It has all the normal benefits of a default implementation, but I'm not sure that's the best way. Since prefix - wouldn't be a protocol requirement, any concrete implementation would only be used in non-generic contexts. An obvious alternative is:
That way there's still a default implementation, but it's only called for types whose authors didn't come up with a better idea since any concrete implementation would show up in the protocol's witness table (at least I think that's how that works... been a while since I looked at those rules).
Good point. Element-wise multiplication, which is the Hadamard product, would indeed requalify that protocol into a ring template, albeit an order of magnitude more narrowly specialized that we would expect. The protocol targets arbitrary vector spaces where the set of elements are not said to form a ring over some product as well, while the Hadamard product probably only works fine with numeric vectors, in practice, at least. Using * for that is another source of confusion in the general case, as already mentioned.
The remaining additive arithmetic looks pretty convincing as a fundamental functional unit for the ML and vector libraries, as well as some separate vector-like types that would benefit from adopting arithmetic operations, i.e. SCNVector and even CGPoint.