On Thu, 16 Jun 2022, Marshall Lochbaum wrote:
You seem to think building these out of boxes makes some philosophical difference. I disagree. Boxes are used to implement array nesting.
I do think it makes a difference. But there is also a practical question: what patterns does the language encourage?
It is possible to go even further: boxes do not need to be in the language at all, as they can be implemented in userspace (albeit not in a modular fashion).
No. The marker can be derived as part of the previous operation (*&.>), so making it part of the next one duplicates information.
*&.> is two operations: multiplying, and boxing. (Actually it's three, since it also unboxes, or really four, since it requires that the right argument be pre-boxed.) */, or *"_1 _ (same thing) is only one operation--multiplication--with the rank specifying how the multiplication is to be performed (or two, if you consider rank to be an operation unto itself). No information is duplicated, then, because, as the result is a flat array rather than a boxed array, there are multiple ways of joining it. (This is also clearly more suggestive.)
With nests, the operations are: - enclose - multiply each - join with boxes, and a requisite 'join', the operations are: - multiply at rank - join selected axes The rank and axis specifications of the latter form speak to its generality. -E ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm