Generic code: @autoconst, @autopure, @autonothrow

Tomek Sowiński just at ask.me
Mon Aug 30 12:39:28 PDT 2010


Dnia 30-08-2010 o 21:16:15 Tomek Sowiński <just at ask.me> napisał(a):

> Dnia 30-08-2010 o 21:10:10 Tomek Sowiński <just at ask.me> napisał(a):
>
>> How about reduce!fun(range)? It's pure/nothrow when fun is  
>> pure/nothrow. Plenty of std.algorithm would benefit.
>
> Eh, nevermind. popFront() must mutate the range so it can't be pure.  
> Need to get some sleep...

But wait! It can be auto(nothrow). So my sleepy-head argument didn't suck  
after all:)

And I do like the auto(qual) syntax.

BTW, isn't it surprising? Think of sum of squares, I mean reduce!"a + b *  
b"(range) -- it should be pure, it's natural. Come to think of it, if pure  
functions required arguments to be @tail immutable**, not from-head  
immutable as it is now, popFront() being also @tail immutable would  
advance the range and it would just work... Damn, now I can't sleep.

** @tail immutable doesn't exist in the language. It was proposed in the  
great const debate not too long ago.


Tomek


More information about the Digitalmars-d mailing list