Evaluation order of index expressions

via Digitalmars-d digitalmars-d at puremagic.com
Tue May 26 06:31:48 PDT 2015


On Tuesday, 26 May 2015 at 12:54:27 UTC, Timon Gehr wrote:
> On 05/26/2015 06:35 AM, "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= 
> <ola.fosheim.grostad+dlang at gmail.com>" wrote:
>>
>> One of C's design mistakes is to make assignments expressions 
>> and not
>> statements.
>
> I think it is more about returning void vs. returning the 
> lvalue. The expression/statement distinction is unnecessary.

Not sure what you mean, the ideal for writing maintainable code 
is that expressions are either free of side effects or that side 
effects at least are independent and encapsulated in a robust 
manner.

Everything is unnecessary beyond the bare minimum (e.g. a Turing 
Machine), but for a sensible imperative language the distinction 
between statements and expressions is necessary, due to control 
flow, which is why SSA needs the phi function: 
http://en.wikipedia.org/wiki/Dominator_(graph_theory) . Unless 
you are doing something completely different, like some weird 
non-deterministic language.

That said, another C design-flaw is that you cannot prevent 
return values from being ignored, but I think that is another 
issue more related to resource management and ownership.

In terms of describing intent, the distinction between functions, 
procedures and constructors have a lot of value. And actually, 
also visually distinguishing between ownership transfer, 
referencing of objects and value assignment…


More information about the Digitalmars-d mailing list