I didn't know Ken Iverson well, but it seems to me he was fond
of having people play with code and intuitively infer the underlying
rules.
Instead of minutely decomposing expressions as abstractions, it might be
more useful to grok them more specifically. For instance, an expression
like " foo&.> " - which means to unbox the arguments, apply "foo", and
box up the results - is so common, it makes sense to understand it
idiomatically and intuitively; the abstract generalization is icing on the
cake.
So, if the right argument starts out unboxed, the initial "unbox" has no
effect but the closing "box" does, i.e.
('pu';'slo';'pre') ,&.> 'ppy'
+---+----+----+
|pup|slop|prey|
+---+----+----+
but, if the right argument is boxed, the result differs:
('pu';'slo';'pre') ,&.> <'ppy'
+-----+------+------+
|puppy|sloppy|preppy|
+-----+------+------+
So, to address your specific query, which I guess is how does this work:
'age spec astig tear'=: i.&.>3 2 2 2
consider that assignment of multiple names inside quotes assigns each
name to the contents of a corresponding box, e.g.
'var1 var2'=. 'contents of box 1';'contents of box 2'
assigns each name to a simple, unboxed string.
So, each of the four names in your example gets an iota vector
corresponding to each of the four numbers on the right. The
"each" cruft serves only to box up each vector so the contents of
each box can be assigned to each name.
Hope this helps.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm