On 4 February 2014 04:17, Elias Mårtenson <loke...@gmail.com> 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.

Reply via email to