Addition and concatenation have different properties: concatenation is not commutative. So the problem is not the types, strings vs int, but different operations. In a language that puts an emphasis on principles like haskell, I find "++" a elegent syntax for concatenation, but otherwise I find that Python's approach of using "+" and throwing a type error is good enough.