Disclose: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
Line 1: Line 1:
{{Built-in|Disclose|⊃}} or '''Reveal''' is a [[monadic function]] in [[Nested array model|nested]] APLs which reduces the level of nesting of an array. Early experiments in array nesting usually defined a primitive to extract the contents of a nested [[scalar]], but did not always specify how it should behave on an array. [[Jim Brown]]'s "A Generalization of APL",<ref>[[Jim Brown]]. [http://www.softwarepreservation.org/projects/apl/Books/AGENERALIZATIONOFAPL "A Generalization of APL"] (Ph.D. thesis). 1971.</ref> stated that it "may be undefined" on non-scalar arrays. However, all dialects do define it on non-scalars, but with differing definitions. Some dialects, for example [[Dyalog APL]], have it extract the argument's initial element in [[ravel order]], while others, for example [[APL2]] have it combine the array's elements (requiring conforming shapes or padding with [fill element]]s). Depending on which approach is taken, it is recommended to use the unambiguous names [[First]] and [[Mix]] for these two functions.
{{Built-in|Disclose|⊃}} or '''Reveal''' is a [[monadic function]] in [[Nested array model|nested]] APLs which reduces the level of nesting of an array. Early experiments in array nesting usually defined a primitive to extract the contents of a nested [[scalar]], but did not always specify how it should behave on an array. [[Jim Brown]]'s "A Generalization of APL",<ref>[[Jim Brown]]. [http://www.softwarepreservation.org/projects/apl/Books/AGENERALIZATIONOFAPL "A Generalization of APL"] (Ph.D. thesis). 1971.</ref> stated that it "may be undefined" on non-scalar arrays. However, all dialects do define it on non-scalars, but with differing definitions. Some dialects, for example [[Dyalog APL]], have it extract the argument's initial element in [[ravel order]], while others, for example [[APL2]] have it combine the array's elements (requiring conforming shapes or padding with [[fill element]]s). Depending on which approach is taken, it is recommended to use the unambiguous names [[First]] and [[Mix]] for these two functions.


For a discussion of all uses of the [[glyph]] <code>⊃</code>, see [[Right Shoe]].
For a discussion of all uses of the [[glyph]] <code>⊃</code>, see [[Right Shoe]].

Revision as of 12:33, 1 May 2020

Disclose () or Reveal is a monadic function in nested APLs which reduces the level of nesting of an array. Early experiments in array nesting usually defined a primitive to extract the contents of a nested scalar, but did not always specify how it should behave on an array. Jim Brown's "A Generalization of APL",[1] stated that it "may be undefined" on non-scalar arrays. However, all dialects do define it on non-scalars, but with differing definitions. Some dialects, for example Dyalog APL, have it extract the argument's initial element in ravel order, while others, for example APL2 have it combine the array's elements (requiring conforming shapes or padding with fill elements). Depending on which approach is taken, it is recommended to use the unambiguous names First and Mix for these two functions.

For a discussion of all uses of the glyph , see Right Shoe.

References

  1. Jim Brown. "A Generalization of APL" (Ph.D. thesis). 1971.
APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare RootRound
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
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 axisIdentity (Null, Ident)
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)Identity (Lev, Dex)
Quad names Index originComparison toleranceMigration levelAtomic vector