Case
%

Case (%
), or Merge, is a dyadic primitive function in Kap and dzaima/APL that forms an array by mixing elements taken from a vector of arrays according to an array of indices. It's closely related to the J adverb (monadic operator) Composite Item }
, which differs in that the right argument is an array whose major cells are mixed together. It can also be considered a generalization of Mask, which chooses between two arguments based on a boolean mask and might be implemented as (A∧~M)∨(B∧M)
.
The following example shows how Case may be used to mix three vectors together:
3 2 1 2 3 % 'abcde' 'ABCDE' '01234' 0BcD4
The right argument is a vector of arrays all of the same shape, and the left argument is a simple numeric array with the same shape as each element of the right argument as well as the result. The result value at a given position is taken from the same position in the i
'th right argument array, where i
is the index at that position in the left argument.
Documentation
 Kap
 J NuVoc, Dictionary