
Sometimes you might find that the list you're summing is empty. Because 'sum' is most often used with numbers, the default sum of a list is 0. If you want to sum a list of non-numbers, provide a suitable start value. For example, to sum a list of lists a suitable start value is []:
sum([[0, 1], [2, 3]], []) [0, 1, 2, 3]
I agree that it would be nice if the start value could just be omitted, but then what should 'sum' return if the list is empty?
I see the problem. I think a good solution would be to tell the user, "If you want `sum` to be able to handle a non-empty list, you must supply `start`." Users that want to add up a (possibly empty) sequence of numbers will have to specify `start`. If start is supplied, it will work like it does now. If start isn't supplied, it will add up all the elements without adding any `start` to them. What do you think?