assumeSafeAppend and purity

Steven Schveighoffer schveiguy at
Mon Feb 6 18:48:18 PST 2012

On Mon, 06 Feb 2012 21:32:05 -0500, Vladimir Panteleev  
<vladimir at> wrote:

> On Tuesday, 7 February 2012 at 01:47:12 UTC, Jonathan M Davis wrote:
>> At present, assumeSafeAppend isn't pure - nor is capacity or reserve.  
>> AFAIK, none of them access any global variables aside from GC-related  
>> stuff (and new is already allowed in pure functions). All it would take  
>> to make them pure is to mark the declarations for the C functions that  
>> they call pure (and those functions aren't part of the public API) and  
>> then mark them as pure. Is there any reason why this would be a _bad_  
>> idea?
> If precedent means anything, assumeUnique is pure.

I think there is a difference -- assumeSafeAppend can make invalid data  
that you did not pass to the pure function.

I'm still not sure if it's pure's job to protect data that you can get to  
via pointer arithmetic, but I think the two cases are different.


More information about the Digitalmars-d mailing list