Zilde: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Adám Brudzewsky
No edit summary
Miraheze>Marshall
No edit summary
Line 1: Line 1:
{{Primitive|⍬|Zilde}} is the [[empty]] numeric [[vector]]. It is the [[shape]] of any [[scalar]], although its own shape is <source lang=apl inline>,0</source>. This is because it has [[rank]] 1 (i.e. it is a vector), so it has exactly one [[axis]] (i.e. its shape is a 1-element vector) with the length 0. (Zilde's shape cannot be Zilde, as that would indicate that it had rank 0, i.e. it were a scalar.) Zilde is equivalent to <source lang=apl inline>⍳0</source> and <source lang=apl inline>⍴0</source> and <source lang=apl inline>0⍴0</source>. Being [[numeric]], Zilde's [[prototype]] is 0.
{{Primitive|⍬|Zilde}} is the [[empty]] [[numeric]] [[vector]]. It is the [[shape]] of any [[scalar]], although its own shape is <source lang=apl inline>,0</source>. This is because, as a vector, it has exactly one [[axis]], and this axis has length 0. Zilde is equivalent to <source lang=apl inline>⍳0</source> and <source lang=apl inline>⍴0</source> and <source lang=apl inline>0⍴0</source>. Being [[numeric]], Zilde's [[prototype]] is 0.


Zilde is notable for being an APL [[glyph]] which represents an array rather than a [[primitive function]] or [[primitive operator]]. In most APLs it is the only array literal which is produced using its own token rather than being part of a family of array literals like [[numeric literals]], [[strings]], or [[system constants]]. Exceptions are:
Zilde is notable for being an APL [[glyph]] which represents an array rather than a [[primitive function]] or [[primitive operator]]. In most APLs it is the only array literal which is produced using its own token rather than being part of a family of array literals like [[numeric literals]], [[strings]], or [[system constants]] (an exception is [[SHARP APL]]'s [[nil]] (<source lang=apl inline>∘</source>), which is the same as <source lang=apl inline>⊂⍬</source>).


* [[Dyalog APL]]'s <source lang=apl inline>#</source> which is the current [[workspace]]'s root [[namespace]]
It should be noted that the empty numeric vector (<source lang=apl inline>⍬</source>) is distinct from the empty character vector (<source lang=apl inline>''</source>) even though they have the same shape and the same elements:
* [[SHARP APL]]'s <source lang=apl inline>∘</source> which is ''nil'', or <source lang=apl inline>⊂⍬</source>
* [[NARS2000]] and [[ngn/apl]]'s <source lang=apl inline>∞</source> denoting infinity
 
It should be noted that the empty numeric vector (<source lang=apl inline>⍬</source>) is distinct from the empty character vector (<source lang=apl inline>''</source>) while comparing "all" their elements would seem to indicate that they are identical:
<source lang=apl>
<source lang=apl>
      ∧/⍬=''
1
       ⍬≡''
       ⍬≡''
0
0
      ∧/⍬=''
1
</source>
</source>
This is because <source lang=apl inline>⍬=''</source> itself returns an empty numeric vector, and reducing an empty vector with the [[Logical And]] function (<source lang=apl inline>∧</source>) yields the [[identity element]] of Logical And, which is 1.
This is because <source lang=apl inline>⍬=''</source> itself returns an empty numeric vector, and reducing an empty vector with the [[Logical And]] function (<source lang=apl inline>∧</source>) yields the [[identity element]] of Logical And, which is 1. However, [[match]] takes [[empty]] array [[prototypes]] into account as well as shapes and elements, so it indicates that the arrays are different.


{{APL built-ins}}
{{APL built-ins}}

Revision as of 09:03, 31 October 2019

Template:Primitive is the empty numeric vector. It is the shape of any scalar, although its own shape is ,0. This is because, as a vector, it has exactly one axis, and this axis has length 0. Zilde is equivalent to ⍳0 and ⍴0 and 0⍴0. Being numeric, Zilde's prototype is 0.

Zilde is notable for being an APL glyph which represents an array rather than a primitive function or primitive operator. In most APLs it is the only array literal which is produced using its own token rather than being part of a family of array literals like numeric literals, strings, or system constants (an exception is SHARP APL's nil (), which is the same as ⊂⍬).

It should be noted that the empty numeric vector () is distinct from the empty character vector ('') even though they have the same shape and the same elements:

      ∧/⍬=''
1
      ⍬≡''
0

This is because ⍬='' itself returns an empty numeric vector, and reducing an empty vector with the Logical And function () yields the identity element of Logical And, which is 1. However, match takes empty array prototypes into account as well as shapes and elements, so it indicates that the arrays are different.


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