On Friday, 18 October 2013 at 17:06:57 UTC, H. S. Teoh wrote:
But if we're gonna do it, I say we should go all the way:

And make scope the default parameter thingy, and implement it.

God I want some kind of escaping check thing so badly, it is supposed to work already!

http://dlang.org/function.html
scope: references in the parameter cannot be escaped (e.g. assigned to a global variable)


But what's interesting here is that references to immutable are virtually value types; string, or immutable(int)[] *can* be escaped safely, whereas const(int)[] or int[] might not, they can be overwritten elsewhere (the case now) and can also be freed elsewhere (if you don't use the gc on them). An immutable reference would necessarily use the gc, since otherwise it isn't really immutable.

So you can store immutable stuff in a global or anything and that's perfectly ok, so scope immutable == immutable. scope const is different though.

I'm not as sure about making nothrow default.

i think throwing is really the default anyway just writing normal D. If we sampled 100 random D functions, I think we'd find most of them are @safe in practice, even if not marked, and probably throw too. So that'd be the sane default.

Reply via email to