Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
November 10, 2012 A refinement for pure implementation | ||||
---|---|---|---|---|
| ||||
Do you remember if Hara has implemented a patch to allow a2 to be immutable? int[] foo1(int x) pure { return null; } int[] foo2(string s) pure { return null; } void main() { immutable a1 = foo1(10); // OK immutable a2 = foo2("hello"); // currently error } The idea behind this is that the type of s is different from the return type of foo2, so foo2 is a strongly pure function. Bye, bearophile |
November 10, 2012 Re: A refinement for pure implementation | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 11/10/2012 03:32 PM, bearophile wrote:
> Do you remember if Hara has implemented a patch to allow a2 to be
> immutable?
>
>
> int[] foo1(int x) pure {
> return null;
> }
> int[] foo2(string s) pure {
> return null;
> }
> void main() {
> immutable a1 = foo1(10); // OK
> immutable a2 = foo2("hello"); // currently error
> }
>
>
> The idea behind this is that the type of s is different from the return
> type of foo2, so foo2 is a strongly pure function.
>
> Bye,
> bearophile
It is strongly pure regardless of potential aliasing in the return value. This is a bug.
|
November 10, 2012 Re: A refinement for pure implementation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | Timon Gehr:
> It is strongly pure regardless of potential aliasing in the return value. This is a bug.
This can't be strongly pure:
int[] foo2(int[] a) pure {
a[0]++;
return a;
}
Bye,
bearophile
|
November 10, 2012 Re: A refinement for pure implementation | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 11/10/2012 05:21 PM, bearophile wrote:
> Timon Gehr:
>
>> It is strongly pure regardless of potential aliasing in the return
>> value. This is a bug.
>
> This can't be strongly pure:
>
>
> int[] foo2(int[] a) pure {
> a[0]++;
> return a;
> }
>
>
> Bye,
> bearophile
The point was that the code you gave should work even without your proposed enhancement.
|
November 10, 2012 Re: A refinement for pure implementation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | Timon Gehr:
> The point was that the code you gave should work even without your proposed enhancement.
So my original question was: do you remember if Hara has already written a patch to fix that bug? :-)
Bye,
bearophile
|
Copyright © 1999-2021 by the D Language Foundation