# From

 `⊇`

Select (`⊇`) (jokingly referred to as Sane Indexing) is a primitive function that allows selecting multiple major cells using indices of the cells. It is equivalent to `⌷⍨∘⊂⍨` and `⌷⍤0 ∞`, only providing a neater notation for such a fundamental concept. It was introduced in Extended Dyalog APL, and then adopted into dzaima/APL.

## Common usage

Select is commonly used to reorder the major cells of an array. For example, the following shuffles any array into random order:

Try it online!

```      Shuffle←?⍨∘≢⊇⊢
Shuffle 'abcdef'
fbdcea
```

Without Select, one would have to write `Shuffle←⊢⌷⍨∘⊂?⍨∘≢`.

In a case where the left argument is a permutation vector for the right argument, the functionality can rightfully be called Permute.

Select especially cleans up expressions for reordering. An ascending sort can be represented as `⍋⊇⊢` and "sort by" can be written as `⊇⍨∘⍋`:

Try it online!

```      'abcde' ⊇⍨∘⍋ 3 1 4 1 5
bdace
```

## Potential extension

Select can be defined as `⌷⍨∘⊃⍨⍤0 ∞` thus allowing both the above usage and "scatter point indexing":

```      1 4 3 ⊇ 4 4⍴⎕A
ABCD
MNOP
IJKL
(1 1)(4 4)(3 4) ⊇ 4 4⍴⎕A
APL
```
APL built-ins 
Primitive functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndex
Selector Index generatorGradeIndex OfInterval IndexIndicesDeal
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Primitive operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-beamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencilCut (J)