It's syntactically more straightforward to resolve the issue of clashing definitions through namespacing with functions compared to operators.
The following is pretty standard:
foo::plus(a, b) // or foo.plus(a, b)
bar::plus(a, b) // or bar.plus(a, b)
Whereas this is more awkward: a foo::+ b // or a foo.+ b
a bar::+ b // or a bar.+ b