Why limit this to vectors of numbers?  Seems like it would be better to make this work for any iterable of any `eltype` that supports `+` and `*` by scalar.   (Similar to the reduction functions, some care is required for type-stability.)