Remix.run Logo
mojifwisi 2 days ago

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
Someone a day ago | parent [-]

I would think a rule “a module that defines an operator overload must introduce at least one of the types involved” would prevent that problem, and still allow most, if not all, good uses of operator overloading.