From APL Wiki
Jump to navigation Jump to search

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]
Primitive functions
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndex
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
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
Quad names Index originComparison toleranceMigration levelAtomic vector