On 04/30/2012 05:13 PM, Alex Rønne Petersen wrote:
On 30-04-2012 12:18, foobar wrote:
Meta comment: C++ is the spawn of the devil so I don't accept anything
related to c++ as a valid argument.

On Sunday, 29 April 2012 at 20:09:34 UTC, Alex Rønne Petersen wrote:
[...]

I have used D and didn't claim that foreach isn't useful.
What I said that is that it belongs in the library, NOT the language.

Yeah, we tried that in C++. It sucked.

See meta comment above.


The reason it works for many functional languages is that they have
even more terse syntax than D. It would suck to make foreach a
function in D.


D wants to support functional programming. That means we should provide
whatever is necessary to write functional style code including foreach
methods. IF D can't properly implement a FP foreach method (And IMO it
*can*) than we have failed.

Of course it can, but not with type inference, unless you templatize it.
That is:

void forEach(alias fun, R)(R range)
{
// ...
}

enjoys type inference: forEach!(item => foo(item))(myRange);

But this doesn't:

void forEach(R)(R range, scope void delegate(ElementType!R) dg)
{
// ...
}

This won't work: forEach(myRange, item => foo(item));

You have to do: forEach(myRange, (ElementType!(typeof(myRange)) =>
foo(item));

which, frankly, sucks.


I agree. It is due to the fact that currently actually no inference takes place, it is just simple deduction. It shouldn't be very hard to add that functionality.

Reply via email to