Proposal: Relax rules for 'pure'

Steven Schveighoffer schveiguy at yahoo.com
Wed Sep 22 14:11:11 PDT 2010


On Wed, 22 Sep 2010 16:03:08 -0400, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> I'll give you an example (with a new keyword to help you understand the  
> difference):
>
> weaklypure void reverse(int[] x)
> {
>     for(int i = 0; i * 2 < x.length; i++)
>         swap(x[i], x[$-1-i]);
> }

A better example -- std.algorithm.sort can be made weakly pure (at least  
for arrays).  It doesn't affect anything but the array passed in.

Without this, you can't sort arrays within pure functions unless you make  
a strong-pure functional sort, which will likely not perform as well.

I'm kind of excited to think that D might be able to parallelize things in  
the right places, and allow imperative algorithms to stay imperative  
within those parallelized functions.

-Steve


More information about the Digitalmars-d mailing list