One benefit of experimenting with low-level PAL behaviours is that I've spent much more time lately reading the ISO spec.
I was reading the specification for ↑ (first), which says that it returns "first-thingy" of the argument.
Now, the definitions section defines "first-thingy" as such:
First-thingy in A : An opration that for A , an array, returns an array B , defined as follows:
If A is empty, set B1 to the typical-element of A .
Otherwise, set B1 to the first-item of the ravel-list of A .
If B1 is a number or a character, set B to an array, whose ravel-list contains the single
item B1 , and whose shape-list is empty.
Otherwise, set B to B1 .
My impression from reading this is that this is not consistent with GNU APL's behaviour in the following case: ↑9
GNU APL returns the number 9 in this case, while it would seem it's supposed to return a 9 wrapped in a zero-dimensional array: ⊂9
Now, GNU APL evaluates ⊂9 to the number 9 as well, which I also feel isn't consistent.
Am I misreading the spec, or is there an inconsistency here?