Zilde: Difference between revisions

Jump to navigation Jump to search
1,441 bytes added ,  08:12, 6 October 2022
fix examples
Miraheze>Adám Brudzewsky
No edit summary
(fix examples)
 
(19 intermediate revisions by 5 users not shown)
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.
{{Built-in|Zilde|⍬}}, or '''Zero-tilde''' (which the common name is a portmanteau of), is the [[empty]] [[numeric]] [[vector]]. It shares its name with the [[glyph]] used to represent it, a zero [[overstrike|overstruck]] with a tilde. It is the [[shape]] of any [[scalar]], although its own shape is <syntaxhighlight lang=apl inline>,0</syntaxhighlight>. This is because, as a vector, it has exactly one [[axis]], and this axis has length 0. Zilde is equivalent to <syntaxhighlight lang=apl inline>⍳0</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍴0</syntaxhighlight> and <syntaxhighlight lang=apl inline>0⍴0</syntaxhighlight>. 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:
The [[glyph]] Zilde is notable in that it represents an array rather than a [[primitive function]] or [[primitive operator]]. This usage was introduced in [[NARS]] and included in [[Dyalog APL]] and many other dialects influenced by these. In most of these 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 literal]]s, [[string]]s, or [[system constant]]s. A similar special literal is [[SHARP APL]]'s [[nil]] (<syntaxhighlight lang=apl inline>∘</syntaxhighlight>), which corresponds to <syntaxhighlight lang=apl inline>⊂⍬</syntaxhighlight>, and Dyalog APL's [[namespace]] reference to the root of the [[workspace]] (<syntaxhighlight lang=apl inline>#</syntaxhighlight>).


* [[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 (<syntaxhighlight lang=apl inline>⍬</syntaxhighlight>) is distinct from the empty character vector (<syntaxhighlight lang=apl inline>''</syntaxhighlight>) 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>
<syntaxhighlight lang=apl>
* [[NARS2000]] and [[ngn/apl]]'s <source lang=apl inline>∞</source> denoting infinity
      ∧/⍬=''
 
1
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>
       ⍬≡''
       ⍬≡''
0
0
      ∧/⍬=''
</syntaxhighlight>
1
This is because <syntaxhighlight lang=apl inline>⍬=''</syntaxhighlight> itself returns an empty numeric vector, and reducing an empty vector with the [[Logical And]] function (<syntaxhighlight lang=apl inline>∧</syntaxhighlight>) yields the [[identity element]] of Logical And, which is 1. However, [[match]] takes [[empty]] array [[prototype]]s into account as well as shapes and elements, so it indicates that the arrays are different.
</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.
Zilde can be used to concisely produce other empty arrays, for example:


{{APL built-ins}}
* <syntaxhighlight lang=apl inline>⍬⊤⍬</syntaxhighlight> gives a 0-row 0-column numeric matrix, identical to <syntaxhighlight lang=apl inline>0 0⍴0</syntaxhighlight>.
* <syntaxhighlight lang=apl inline>⍪⍬</syntaxhighlight> gives a 0-row 1-column numeric matrix, identical to <syntaxhighlight lang=apl inline>0 1⍴0</syntaxhighlight>.
* <syntaxhighlight lang=apl inline>⍉⍪⍬</syntaxhighlight> gives a 1-row 0-column numeric matrix, identical to <syntaxhighlight lang=apl inline>1 0⍴0</syntaxhighlight>.
* <syntaxhighlight lang=apl inline>,¨⍬</syntaxhighlight> gives an empty vector of 1-element numeric vectors, identical to <syntaxhighlight lang=apl inline>0⍴⊂,0</syntaxhighlight>.
* <syntaxhighlight lang=apl inline>⍪¨⍬</syntaxhighlight> gives an empty vector of 1-by-1 numeric matrices, identical to <syntaxhighlight lang=apl inline>0⍴⊂⍪0</syntaxhighlight>.
{{APL built-ins}}{{APL glyphs}}[[Category:Primitive arrays]][[Category:Glyphs]]

Navigation menu