I observe:
<;.1^:_1 <;.1 '/obverse/reverse/inverse/converse/perverse'
|nonce error
| <;.1^:_1<;.1'/obverse/reverse/inverse/converse/perverse'
That is, the inverse of <;.1 is momentarily undefined.
I know the general definition of <;.1^:_1 is a tricky problem. However,
there are simple cases where ; would suffice, and I request that they be
implemented as such (as they once were). The nonce error should be retained
where ; is not obviously sufficient.
An example simple case is the above: a vector of boxes where each box contains
a vector (I can't think of a case where <;.1 would produce boxed scalars, but
perhaps the "simple case" could be generalized to include those, too). This
request applies to <;.2 as well as <;.1 (see postscript).
If this request is implemented, I further request that special code which
supports phrases of the form:
;@:(<@:u;.n)
be extended to support phrases of the form:
u&.>&.(<;.n)
-Dan
PS: For <;._1 and <;._2 , the case is not so clear. Note the difference:
<;. 1 b. _1
<;.1^:_1
<;._1 b. _1
|domain error
| <;._1 b._1
This may be justified, as negative cuts permanently lose information, and so
cannot have true inverses. Though, as I've noted before, there is some
precedent for primitives which have useful, yet not "true", inverses. The
canonical example is:
;: b. _1
}:@;@(,&' '&.>"1) :.;:
whence:
(-: ]&.;:) 'lots of extraneous blanks '
0
So raze may suffice here, as well. Or, if not raze, then perhaps the raze of
the result of affixing a fill element within each box, as in:
<;._1 :. ([: ; ({.~ -@:>:@:#)&.>)
<;._2 :. ([: ; ({.~ >:@:#)&.>)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm