Using pure to create immutable

Dmitry Olshansky dmitry.olsh at gmail.com
Thu Sep 22 12:36:40 PDT 2011


On 22.09.2011 22:53, Jesse Phillips wrote:
> The discussion on Reddit brought to my attention that pure functions can return and assign to an immutable.
>
> http://www.reddit.com/r/programming/comments/knn5p/thoughts_on_immutability_in_d/c2lsgek
>
> I am trying to modify the example request to make use of this, but have failed.
>
> http://www.reddit.com/r/programming/comments/knn5p/thoughts_on_immutability_in_d/c2lrfpm
>
> test.d(4): Error: cannot implicitly convert expression (makeFromArray([1,2,3]))
> of type test.List!(int).List to immutable(List)
>
> Is this a bug? I can't identify where this issue would lie (works with inheritance and templating).
>

Maybe:
-------------------------<<<<<<<<<<
  List!T makeFromArray(T)(immutable T[] array) pure {
>     if (array.length == 0) { return null; }
>
>     auto result = new Cons!T(array[0], null);
>     auto end = result;
>
>     for (int i = 1; i<  array.length; ++i) {
>        end.tail_ = new Cons!T(array[i], null);
>        end = end.tail_;
>     }
>
>     return result;
> }
>

If I'm not mistaken only strongly pure functions are working.

-- 
Dmitry Olshansky


More information about the Digitalmars-d-learn mailing list