Thread overview
A refinement for pure implementation
Nov 10, 2012
bearophile
Nov 10, 2012
Timon Gehr
Nov 10, 2012
bearophile
Nov 10, 2012
Timon Gehr
Nov 10, 2012
bearophile
November 10, 2012
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
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
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
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
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