Is This a Bug

Jonathan M Davis jmdavisProg at gmx.com
Wed Oct 26 00:24:55 PDT 2011


On Wednesday, October 26, 2011 11:15:20 Gor Gyolchanyan wrote:
> I see. But is there any practical advantage of a function being pure?
> I mean, besides an optimization hint for the compiler, of course.

1. You know that it doesn't access global variables, which is at minimum an 
advantage as far as understanding the code goes.

2. Under some situations, pure allows the compiler to know that the return 
value has no aliasing with the function's arguments, so the return value of 
the function can be implicitly converted to immutable.

3. Aside from the potential optimization of removing additional calls to the 
same function with the same arguments within a statement, the combination of 
pure and const on member variables gives stronger guarantees than either alone 
could, potentially further aiding compiler optimizations.

There are probably others, but that's what comes to mind at the moment. 
Primarily though, it comes down to being able to guarantee a certain level of 
encapsulation (which makes it easier to reason and make guarantees about your 
program) and enables the compiler to better optimize code.

- Jonathan M Davis


More information about the Digitalmars-d mailing list