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

Reply via email to