It's also a major departure from most of the other operators, in that it modifies a view in place.
Yuck, side effects. Open the floodgates! I'm kind of worried...
$view set 123 name "John Doe"
will need to be rewritten as:
[$view set 123 name "John Doe"] var view
That's a bit verbose. It could be streamlined by introducing a ":=" operator, which does the same thing:
$view := set 123 name "John Doe"
The same notation would then also work for other operators. So instead of the in-place modifying "addcol", it would become a clean functional version with no side-effects. Side-effects, i.e. redefining the view would then be done as follows:
$view := addcol salary:I {100 * age}
The first example on this page would change slightly, to:
X := addcol C:I {B + ?} 100
-jcw
Note that S (e.g., R) basically works that way, but doesn't have a handy operator like ":=". So in S you have to write:
x <- x +1 not: x := +1
S however, does have the nice property that you can index into existing data structures and use the result on the left hand side of an assignment. E.g., this works nicely, and sets rows 10 through 20 of the column named "c" to the value of foo:
table[10:20,"c"] <- foo
--atp, 2004/05/23 05:56 EDT
Notation-wise, Ratcl won't be able to use the R/S syntaxes you've described. I'm sure there are other ways which are not too inconvenient.
Your last example implies implicit looping, i.e. matching up dimensions on either side of the assignment. It's a powerful concept (also present in the J and K vector languages).