On 03/07/2011 02:05 PM, Jacob Carlborg wrote:
You could implement operator overloading without any special cases/support in
the language, like Scala does. In Scala

3 + 4

Is syntax sugar for:

3.+(4)

It's possible because of the following three reasons:

* Everything is an object
* Method names can contain other characters than A-Za-z_
* The infix syntax discussed in this thread

Implementing operator overloading like this also allows you to add new
operators and not just overloading existing ones.

We could give a standard name to each character in an allowed class, so that
        x !%# y
maps to
        x.opBangPercentHash(y);
;-)
Another solution is to specify operators in method defs:
        X opBangPercentHash as "!%#" (X y) {...}
Or even use them directly there:
        X !%# (X y) {...}
possibly with an annotation to warn the parser:
        @operator X !%# (X y) {...}
In any case, /this/ is not a big deal to manage in symbol tables, since an operator is just a string like (any other) name. The big deal is to map such features to builtin types, I guess (which are not object types).

Denis
--
_________________
vita es estrany
spir.wikidot.com

Reply via email to