DIP 1003: remove `body` as a keyword

Basile B. via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Dec 10 05:49:09 PST 2016


On Monday, 28 November 2016 at 02:17:20 UTC, Dicebot wrote:
> On 11/24/2016 05:29 PM, WM.H wrote:
>> On Saturday, 19 November 2016 at 21:16:15 UTC, Dicebot wrote:
>>> DIP 1003 is merged to the queue and open for public informal 
>>> feedback.
>>>
>>> PR: https://github.com/dlang/DIPs/pull/48
>>> Initial merged document:
>>> https://github.com/dlang/DIPs/blob/master/DIPs/DIP1003.md
>>>
>>> If you want the change to be approved and have ideas how to 
>>> improve it to better match on 
>>> https://github.com/dlang/DIPs/blob/master/GUIDELINES.md and 
>>> existing published reviews - please submit new PR with 
>>> editorial and ping original author.
>> 
>> This DIP fixes the problem for "body" but not for the other 
>> keywords. After all the problem may exist for other keywords. 
>> Was a new pragma considered ? For example an identifier alias.
>> 
>> pragma(idAlias, "body", "body_" )
>
> AFAIU, the point of this DIP is that "body" is standing out 
> from other keywords being used only in one very specific 
> context and being a very common english word at the same time. 
> Your proposal has a completely different (and much more 
> drastic) approach.

Yes. But while it's clear that "body" is a keyword that's less 
related to programming languages than the others (i.e more usable 
as identifier), it's not actually that mad to imagine a generic 
approach. For example Object Pascal has such a feature:

http://wiki.freepascal.org/FPC_New_Features_2.6.0#Support_for_.26-escaping_of_keywords

which is not well known, as I've myself discovered this just 3 
minutes ago.
In D there would be the "#" token that's not really used, which 
could serve to escape keywords, while still considering them as 
identifier when it's needed, e.g

struct Body{}
Body #body;
writeln("'", #body.stringof, "'");

would output: 'body'


More information about the Digitalmars-d-announce mailing list