yes, but my point was you wanted to be able to run code on "anything that implements the plus function". OK, so let's say there's an interface that expresses that, Addable, but that not all the types you want to use sum() with implement that. under the hood you would need to either specialise the code for any time that's used, or you'd need to do dynamic dispatch at runtime.