Mixin - to get to the content-type `MapResult!(__lambda1, int[]).MapResult`
Dennis Ritchie via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun May 31 01:24:12 PDT 2015
On Sunday, 31 May 2015 at 07:28:02 UTC, Ali Çehreli wrote:
> So, you want to skip that extra func() call and have the code
> be "inlined". That's one of the things what any decent
> optimizing compiler does anyway.
Yes, I think that there is an extra function call, because DMD is
based on Zortech C++ backend, so I figured ... :)
> I hear great things especially about ldc and that gdc is just
> good enough. Of course, one needs to check the assembly output
> to be sure that there is no extra function calls.
>
> Ali
And yet in DMD I'm not sure :)
import std.stdio, std.algorithm;
static int idx;
void walk(R)(R range) {
while (!range.empty) {
range.front;
range.popFront;
}
}
struct Tap(alias func, R)
{
R range;
alias range this;
@property auto front()
{
func(range.front);
return range.front;
}
}
auto tap(alias func, R)(R range)
{
writeln(__FUNCTION__); // ???
return Tap!(func, R)(range);
}
void main() {
[5, 6, 7]
.map!(a => [idx++, a])
.tap!((a) { writeln(a[1..$]); })
.walk;
}
More information about the Digitalmars-d-learn
mailing list