I was playing around with the Rank Operator, which is something that isn't
really documented in many places. I only saw references to it in the spec,
while neither APL2 nor Dyalog mentions it.
Now, there are a few things that behaves strangely, although it may be
correct.
First of all, the following works (]BOXING is 8):
*xx ← 4 5⍴⍳10*
* {'foo',⍵}⍤1 xx*
┌→─────────────┐
↓foo 1 2 3 4 5│
│foo 6 7 8 9 10│
│foo 1 2 3 4 5│
│foo 6 7 8 9 10│
└──────────────┘
But the following does not:
*{'foo',⍵}⍤1 4 5⍴⍳10*
RANK ERROR
λ1⍤1 4 5⍴⍳10
^ ^
*({'foo',⍵}⍤1) 4 5⍴⍳10*
RANK ERROR
(λ1⍤1)4 5⍴⍳10
^ ^
Also, the spec says it returns a function, but I can't assign it to a
variable:
*a ← {'foo',⍵}⍤1*
RANK ERROR
a←λ1⍤1
^ ^
I suppose the last one is expected, since *xy←+/* also does not work (but
should it?)
Is the behaviour correct, or is there a problem with the parsing?
Regards,
Elias