Walter Bright wrote:
aarti_pl wrote:
I know that quite a few people here doesn't like to allow users to
define their own operators, because it might obfuscate code. But it
doesn't have to be like this. Someone here already mentioned here that
it is not real problem for programs in C++. Good libraries don't abuse
this functionality.
The problem with user defined operators is:
1. User defined tokens - mixes up lexing with semantic analysis
2. User defined syntax - mixes up parsing with semantic analysis
and then we're in C++ land :-(
Unless such have a unique grammar that can be lexed and parsed:
a :string: b
where string is the user defined name, so you can do things like:
a :^^: b
and define your own pow operator. The problem with this approach is the
sheer ugliness of it.
There's not many sensible operators anyway. opPow is the only missing
one that's present in many other general-purpose languages. The only
other ones I think are remotely interesting are dot and cross product.
Anything beyond that, you generally want a full DSL, probably with
different precendence and associativity rules. Eg, for regexp, you'd
want postfix * and + operators. There are examples of clever things done
in C++ with operator overloading, but I think that's just because it's
the only way to do DSLs in C++.
I don't think the applications are there.