Pure functions as initializers for immutable structures?

Tomek Sowiński just at ask.me
Tue Oct 19 11:54:32 PDT 2010


Dnia 18-10-2010 o 20:31:26 Tomek Sowiński <just at ask.me> napisał(a):

> Initializing immutable structures is a source of constant grief.  
> Anything non-trivial requires instancing a mutable structure,  
> initializing it, and then either casting to immutable (it's up to you to  
> ensure no alias leaked) or, not to violate the type system, duplicate  
> the whole.
>
> Yet, if there was a situation where the alias leaking is under control,  
> casting would be safe. Perhaps pure* functions are such a place. They  
> can only touch the immutable world, whether through globals or through  
> their parameters. So if one initializes the returned structure with a  
> reference to the outside world, it will be immutable. And if you stuff  
> the structure with anything mutable, it must have been created within  
> the function's body, so no alias leaks.
>
> Call me crazy, but I think it is safe to implicitly convert a pure  
> function's return value to immutable. What you think?
>
> * here by pure I mean either the old pure** when it still had immutable  
> arguments, or Don's "immutably pure".
> ** BTW, http://www.digitalmars.com/d/2.0/function.html still says  
> immutable, please update.

OK, I see the interest is dying down (so boring, not even one duck to  
name) so I filed an enhancement request so it won't be forgotten.

http://d.puremagic.com/issues/show_bug.cgi?id=5081

--
Tomek


More information about the Digitalmars-d mailing list