More on purity
    bearophile 
    bearophileHUGS at lycos.com
       
    Wed Dec 21 13:04:24 PST 2011
    
    
  
Timon Gehr:
> This particular case should work, because there is no possibility 
> parameters and return value alias.
The good thing is that this case can be fully determined at compile-time. The bad thing is that increases the complexity of D purity for the programmer that has to use it.
> Have you already filed an enhancement 
> request about this?
I have not filed a diagnostic enhancement regarding the last part of my post, but I have filed an enhancement on the main problem. Sometimes design decisions need to be discussed here and not in Bugzilla.
 However, as soon as it looks like this:
> 
> Object[] foo3(const Object[] a) pure {
>      // ...
> }
> 
> Then it cannot compile when passed a mutable or const array anymore, whereas
> 
> Object[] foo3(in Object[] a) pure {
>      // ...
> }
> 
> Should work even then (but preferably after DMD starts to actually 
> enforce 'scope').
Nice.
> Another thing: This should always work:
> // T[] foo2(const T[]){...}; immutable T[] arr1
> immutable T[] r3 = foo2(arr1); // currently error
This is yet another situation, I think.
Bye,
bearophile
    
    
More information about the Digitalmars-d
mailing list