What are (dis)advantages of using pure and immutable by default?

Bahman Movaqar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Sep 7 04:12:50 PDT 2015


On Monday, 7 September 2015 at 10:55:13 UTC, anonymous wrote:
> On Monday 07 September 2015 12:40, Bahman Movaqar wrote:
>> I can see some serious advantages of this, most notable of 
>> which is minimum side-effect and predictability of the code.  
>> However I suppose it's going to impact the performance and 
>> memory footprint as well, though I have no idea how deep the 
>> impact will be.
>
> I don't see how merely marking things immutable/pure would 
> affect performance negatively. They're just marks on the type. 
> If anything, you could get a performance boost from the 
> stricter guarantees. But realistically, there won't be a 
> difference.

Just "marks", eh?
I was under the impression that when a variable, that is declared 
as `immutable`, is passed to a function, a copy of the value is 
passed.
However based on "marks" I can imagine that since the data is 
marked as `immutable` only a reference is passed; and the 
compiler guarantees that what is referenced to never changes.  Am 
I right?

> If you change your algorithms to avoid mutable/impure, then you 
> may see worse performance than if you made use of them. But I 
> suppose that would be "a reason not to" mark everything 
> immutable/pure.

True.
Nowadays that more algorithms are designed with parallelism and 
distribution in mind, though, I believe mutating values and 
impure functions, at least in certain domains, will cease to 
exist.



More information about the Digitalmars-d-learn mailing list