Wow, I didn't know about that chronology either. Thank you for enlightening me.
In hindsight, when we added modified assignment, it might have been a good idea to require the syntax
x(f←)z
which would be unambiguous. Of course, it isn't too late to allow this.
I believe that with both this additional restriction and requiring parenthesis for multiple assignment, auto-localisation doesn't preclude modified assignment or using the pass-through value:
⍝ Examples assuming parentheses are required for both strands and modified assignments:
f x ← a ⍝ use of pass-through value
(x y)← a ⍝ strand assignment
x(f ←)a ⍝ modified assignment
x f y ← a ⍝ use of pass-through value
(f g) x ← a ⍝ use of pass-through value
f(x y)← a ⍝ use of pass-through value from strand assignment
f x (g ←)a ⍝ use of pass-through value from modified assignment
(x y)(g ←)a ⍝ modified strand assignment
(x y z)← a ⍝ strand assignment
x(f o ←)a ⍝ modified assignment with derived function
f x g y ← a ⍝ use of pass-through value
x f y (g ←)a ⍝ use of pass-through value from modified assignment
(f g) h y ← a ⍝ use of pass-through value
x(f g) y ← a ⍝ use of pass-through value
x f (y z)← a ⍝ use of pass-through value from strand assignment
f x (f g ←)a ⍝ use of pass-through value modified assignment with derived function
(f g) y (h ←)a ⍝ use of pass-through value from modified assignment
(f g)(x y)← a ⍝ use of pass-though value from strand assignment
(x y)(f g ←)a ⍝ modified strand assignment with derived function
(f g h) x ← a ⍝ use of pass-through value
f(x y z)← a ⍝ use of pass-through value from strand assignment
x(f g h ←)a ⍝ modified assignment with derived function
(x y z)(f ←)a ⍝ modified strand assignment
While we (kind-of) don't currently allow named functions doing the selection in selective assignment, this scheme doesn't solve
that problem: (f x)←a vs (x y)←a