'Structural under' is an extension to under (&. &.:) that allows it to
operate on otherwise uninvertible structure-changing verbs. It is
implemented in dzaima/apl (https://github.com/dzaima/APL/).
For example:
-&.{. 1 2 3 4 NB. take the head, negate it, reaffix it to the rest of
the body
_1 2 3 4
}:&.}. 1 2 3 4 NB. remove the head, remove the tail, and then sew the
head back on
1 2 3
|:&.}. i.4 3 NB. remove the head, transpose the body, and then
reattach the head
1 2 3
3 6 9
4 7 10
5 8 11
|.&., i.2 3 NB. ravel, reverse, and then unravel
5 4 3
2 1 0
To make this functionality available to users, I suggest using .: for
'assign under', by analogy to :. and ::. Then:
u&.:(v .: vu) y ←→ vu y;u v y.
x u&.:(v .: vu) y ←→ vu x;y;(v x) u v y
The reason that vu is only applied monadically is to allow for the
expected identity:
u&.:(m&(v .: vu)) y ←→ m vu y;u v y
Thoughts?
-E
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm