From APL Wiki
Jump to navigation Jump to search

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'
Works in: dzaima/APL

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.


APL built-ins [edit]
Primitives (Timeline) Functions
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)
Quad names Index originComparison toleranceMigration levelAtomic vector