Thoughts on function names containing arbitrary symbols

Jacob Carlborg doob at me.com
Wed Oct 5 12:54:59 PDT 2011


On 2011-10-05 09:54, Walter Bright wrote:
> On 10/4/2011 2:46 AM, Jacob Carlborg wrote:
>> What are the thoughts around here on function names containing arbitrary
>> symbols, like in Scala. Example:
>>
>> void ::: (int a) {}
>
> This, in effect, means "user defined tokens". The lexing pass will then
> become intertwined with semantic analysis. While possible, this will
> make the compiler slow, buggy, impossible to run the passes
> concurrently, hard to write 3rd party parsing tools, etc.

Yes, exactly. I suspected that would be the answer because of how D 
works. If we instead look on Scala, where everything is a an object and 
every operation is a method call.

3 + 4

Is interpreted as

3.+(4)

It's the same with "regular" methods

instance bar 4

Is interpreted as

instance.bar(4)

Does Scala have the same problem? To me looks as at least lexing could 
be completely separated. Then it's up to the parser to figure out that 
"3 + 4" is syntax sugar for "3.+(4)" which is a regular method call.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list