Deterministic life-time storage type
Artur Skawina
art.08.09 at gmail.com
Sat Apr 21 08:17:02 PDT 2012
On 04/21/12 16:22, Christophe wrote:
> Now, this is the idea in a few words:
> In each function signature, you can add information about whether the
> function may keep reference to its parameters or return value. Then,
> when you declare a variable, you can say how long you want to use that
> variable. With these information, the compiler can check you use your
> variables right, and use this information to destroy the variable at the
> right time.
>
> To do this, I'll alter the meaning of the scope, in, out and inout
> keywords to create new storage type :
[...]
> I only gave here a few definitions, from which a whole scope system can
> be deduced, and implemented. I've given it more thoughts, but this post
> is long enough for now, so I will let you give me your thoughts, and
> gladly answer your questions about subtelity that may arise,
> feasibility, etc.
"scope", in its current meaning, should have been the default for all
function arguments. If this was the case, would introducing your scope-scopes
bring any additional benefits? (Let's ignore enforcement for now, and assume
the compiler won't let the scoped variables escape).
There was a thread some time ago on a similar topic:
http://www.digitalmars.com/d/archives/digitalmars/D/learn/Why_I_could_not_cast_string_to_int_32126.html#N32168
Your "scope(out)" seems to be yet another incarnation of uniq/unique
(something that apparently keeps coming up over and over again).
"scope(inout)" AFAICT could be "T[] f(return T[] a) { return a[0..2]; }";
reusing the "return" keyword to mean "this argument could be returned
directly or indirectly as result".
artur
More information about the Digitalmars-d
mailing list