On Monday, 15 December 2014 at 02:45:04 UTC, Walter Bright wrote:
1. All inout actually does is reduce code copy/pasta, it is not critical.

Being forced to duplicate every single function in two flavors to actually make scope system usable? This is as much critical as it can be.

2. This is what scope inference is all about.

Which only works with templates and lack of scope on arguments does not affect function body -> templates are not necessary, same as inout.

2) at least optional transitivity to be able to express to protect with scope data referenced by slice or owned linked list referenced from root node.

1. that won't work unless scope is a type constructor

I know and this is why I am leaning toward it being qualifier despite all related issues.

2. it can be achieved by using wrappers that only allow by-scope references to their data (RC is an example of such a wrapper)

It is viral approach and backwards incompatible one - we can't change signatures of Phobos functions to return Wrapped!(char[]) instead of char[] for example. While theoretically possible I can't call this approach practical - not until see some convincing application example.

In your tree example I would have never wanted scope protection of one specific node of such tree - but a transitive scope protection of whole tree view available through on of node pointers/references. It doesn't matter who and how owns the data for borrowship implementation - only thing that matters that _it
is not me_.

As I explained to Manu, transitive scope makes things like doing a symbol table lookup, then putting a pointer to the found symbol in an AST, not workable.

This sounds totally against my understanding of scope. I want scope exactly to prohibit such actions. However it is possible in slightly modified way - where you don't directly insert pointer to AST but use public method of AST control structure that checks if supplied scope pointer belongs to list of nodes it owns and casts away scope after that.

Reply via email to