[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-apl] Strange behaviour of ,/
From: |
Jay Foad |
Subject: |
Re: [Bug-apl] Strange behaviour of ,/ |
Date: |
Tue, 4 Feb 2014 09:20:12 +0000 |
On 4 February 2014 04:17, Elias Mårtenson <address@hidden> wrote:
> Thank you. This made me aware of the fact that I still don't understand
> this. You are right that the rank is zero, shown by the fact that ⍴,/1 2 3
> returns an empty result:
>
> 8⎕CR ⍴,/1 2 3
> ┌⊖┐
> │0│
> └─┘
>
>
> Can you explain to me why that is the case? When I look at the result from
> ,/1 2 3 it looks like an array that contains a single element: another array
> with the values 1 2 3 in it.
Yup, that's right. It's a scalar (a rank-zero array) whose single item
is the vector (rank-one array) 1 2 3.
> But it isn't. The result is rank zero, and I
> can't take the first element from it:
>
> (,/1 2 3)[1]
> RANK ERROR
> (,/1 2 3)[1]
This is a mis-use of bracket indexing. With bracket indexing [x;y;z],
the number of indices inside the brackets has to match the rank of the
array you're indexing into, so [1] will only work on a vector. That's
why you get an error.
> But wait, I can take the first element from it:
>
> ↑,/1 2 3
> 1 2 3
This works because ↑ will give you the first item of an array of any
rank. In fact ↑,/ is a common idiom for catenating a bunch of vectors.
Jay.