removal of cruft from D

Justin Johansson no at spam.com
Fri Nov 20 14:46:49 PST 2009


Nick Sabalausky wrote:
> "Yigal Chripun" <yigal100 at gmail.com> wrote in message 
> news:he6sqe$1dqu$1 at digitalmars.com...
>> Based on recent discussions on the NG a few features were 
>> deprecated/removed from D, such as typedef and C style struct 
>> initializers.
>>
>> IMO this cleanup and polish is important and all successful languages do 
>> such cleanup for major releases (Python and Ruby come to mind). I'm glad 
>> to see that D follows in those footsteps instead of accumulating craft 
>> like C++ does.
>>
>>
>> As part of this trend of cleaning up D before the release of D2, what 
>> other features/craft should be removed/deprecated?
>>
>> I suggest reverse_foreach and c style function pointers
>>
>> please add your candidates for removal.
>>
> 
> s/reverse_foreach/foreach_reverse/ ;)
> 
> 1. Floating point literals without digits on *both* sides!!! "1.", ".1" --> 
> Useless hindrance to future language expansion!
> 
> 2. Octal literals! I think it'd be great to have a new octal syntax, or even 
> better, a general any-positive-inter-base syntax. But until that finally 
> happens, I don't want "010 == 8" preserved. And I don't think the ability to 
> have an octal literal is important enough that lacking it for a while is a 
> problem. And if porting-from-C really has to be an issue, then just make 
> 0[0-9_]+ an error for a transitionary period (or forever - it'd at least be 
> better than maintaining "010 == 8").
> 
> 3. Also the comma operator, but that's already been recently discussed.

On 1.  I understand you mean floating point literals without digits on 
both sides of the decimal point should be disallowed.  On basis of this 
understanding I beg to differ on grounds that this *should* be allowed 
for future language expansion.

Rationale: Whilst D is not currently XML aware (to any meaningful level 
of standards compliance), the language may go that way in the future. 
Therefore I would suggest that the lexical form of all literals in the 
language should be aligned with, or at least include the lexical forms 
of, literals as allowed by XML Schema Part 2: Datatypes Second Edition

http://www.w3.org/TR/xmlschema-2/

Specifically this does allow digits to be omitted from either size as 
per the following lexical production:

DoubleLiteral ::=
(("." Digits) | (Digits ("." [0-9]*)?)) [eE] [+-]? Digits

It is noted, of course, that D does provide the very programmer-friendly 
mechanism of allowing underscores to used to separate digits in integer 
literals.  Whilst integers with embedded underscores are not included in 
the lexical space of integers as in cited XML Schema Datatypes, I do not 
argue against them.  In other words, whatever D supports with respect to 
the lexical forms of literals is fine so long as it *does not* preclude 
    lexical forms from XML Schema Datatypes.

On 3.  I cannot see the comma operator being removed in any short space 
of time; this would have the adverse effect of introducing more problems 
  at this stage and would likely delay D2 even further.  There is a 
special case usage of comma operator expressions that I would like to 
see disallowed and that is in the declaration of array dimensions, a 
confusing situation that I have mentioned before.

Recap:  What does the following declaration mean?

int[3,4,5] x;

Does this look like a 3 dimensional array declaration in any other 
language?  Of course it is not though (in D).

Cheers
Justin Johansson





More information about the Digitalmars-d mailing list