Does D have too many features?

David Nadlinger see at klickverbot.at
Sun Apr 29 01:21:34 PDT 2012


On Sunday, 29 April 2012 at 01:06:54 UTC, bearophile wrote:
> retro() can't replace foreach_reverse until the front-end 
> demonstrability produces asm code equally efficient.
> Loops _must_ be fully efficient, they are a basic language 
> construct, this is very important. Even foreach() is sometimes 
> not equally efficient as a for() in some cases...

Slightly related: For this:

---
import core.stdc.stdio;
import std.algorithm;
import std.range;

void main() {
   int sum;
   foreach (i; retro(iota(11))) sum += i;
   printf("%d\n", sum);
}
---

LDC produces
---
__Dmain:
	pushq	%rax
	movl	$0x00000037,%esi
	xorb	%al,%al
	leaq	_.str24(%rip),%rdi # str24 = "%d\n"
	callq	_printf
	xorl	%esi,%esi
	movl	%eax,0x04(%rsp)
	movl	%esi,%eax
	popq	%rdx
	ret
---

Now that's constant folding… ;)

David


More information about the Digitalmars-d mailing list