foreach thoughts

Jakob Ovrum jakobovrum at gmail.com
Tue Jan 14 01:37:30 PST 2014


On Tuesday, 14 January 2014 at 09:21:59 UTC, Manu wrote:

> Personally, I generally like the '!' syntax, except when it's in
> conjunction with lambda's where it can kinda ruins the 
> statements a bit.

I know what you mean, but I think it's more due to the extra 
parentheses than the exclamation mark, in which case UFCS really 
helps, e.g.

array.map!(...).filter!(...).copy(sink);

When this is not an option (due to passing more than one 
argument), splitting the expression into multiple lines still 
helps.

> I'm quite concerned about unoptimised performance too. I know 
> that's
> unusual, but I'm often left wondering what to do about it.
>
> Imagine, iterating over an array, if I use .filter(lambda) or 
> something,
> there's now an additional 2 function calls at least per 
> iteration, as
> opposed to the original zero. If this is idiomatic (I'd like to 
> think it
> should be since it's fairly tidy), then we commit to a serious 
> performance
> problem in unoptimised code. Liberal use of .empty and things 
> too is a
> problem in unoptimised code... :/

I think it is the price we pay for choosing function-based 
generic programming (that is, it's not a problem for mixin-based 
generics). Idiomatic C++ has the same compromise (except, of 
course, the mixin approach is only available as the less powerful 
text preprocessor).


More information about the Digitalmars-d mailing list