From APL Wiki
Revision as of 15:32, 6 March 2024 by Marshall (talk | contribs) (Disambiguate use in K and BQN)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
For the K and BQN function that creates a one-element list containing its argument, see Pair.

Enlist () is a primitive function which returns a simple vector of all simple scalar values in a possibly nested array. Enlist differs from Ravel in that Enlist flattens over all layers of nesting, while Ravel flattens only the outermost layer. Enlist shares its glyph with the dyadic function Membership.


APL2 IUP had mean Type[1] and Dyalog APL originally did too. However, by the time IBM released APL2, (which stood for e in prototypical element) was repurposed for Enlist ( being for e in enlist). Thus, Dyalog left the Type meaning in place only when migration level is 0, while setting it to 1 (the default) or higher follows IBM's replacement meaning.


Enlist is equivalent to a depth-first search collecting all simple scalars, where each layer (which in turn can be of any rank) is traversed in ravel order.

      ⎕←MAT←2 2⍴'MISS' 'IS' 'SIP' 'PI'

      ⎕←M←1 (2 2⍴2 3 4 5) (6(7 8))
│1│2 3│┌─┬───┐│
│ │4 5││6│7 8││
│ │   │└─┴───┘│
1 2 3 4 5 6 7 8

Enlist acts like Ravel for simple arrays. This includes simple scalars, where the result is a singleton vector.

      ⎕←mat←4 4⍴⍳16
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16

      3 ≡ ∊3                  ⍝ Not the same
      ⍴∊3                     ⍝ It's now a vector

External links



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