Suffix: Difference between revisions

Jump to navigation Jump to search
Prefix and Suffix vectors now have a page
Miraheze>Marshall
(Created page with "A '''suffix''' is a kind of subarray which is like a prefix except that values are taken from the end of the array rather than the beginning: a vector is a suffix...")
 
(Prefix and Suffix vectors now have a page)
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
A '''suffix''' is a kind of [[subarray]] which is like a [[prefix]] except that values are taken from the end of the array rather than the beginning: a [[vector]] is a suffix of another vector if it is no longer than that vector, and shares all of its trailing [[element]]s. In [[leading axis theory]], an array may be considered a suffix of another array of the same [[rank]] if the same relation holds with [[major cell]]s in place of elements. The function [[Drop]] produces suffixes of its right argument when the left argument is non-negative.
A '''suffix''' is a kind of [[subarray]] which is like a [[prefix]] except that values are taken from the end of the array rather than the beginning: a [[vector]] is a suffix of another vector if it is no longer than that vector, and shares all of its trailing [[element]]s. In [[leading axis theory]], an array may be considered a suffix of another array of the same [[rank]] if the same relation holds with [[major cell]]s in place of elements. The function [[Drop]] produces suffixes of its right argument when the left argument is non-negative.


In analogy to [[prefix]] testing, whether an array is a suffix may be tested using [[Take]] with a [[Minus|negated]] left argument and [[Match]]. The only difference is the negation.
In analogy to [[prefix]] testing, whether an array is a suffix may be tested using [[Take]] with a [[negate]]d left argument and [[Match]]. The only difference is the negation.
<source lang=apl>
<syntaxhighlight lang=apl>
       isSuffix ← {((≢⍺)≤(≢⍵)) ∧ ⍺≡(-≢⍺)↑⍵}
       isSuffix ← {((≢⍺)≤(≢⍵)) ∧ ⍺≡(-≢⍺)↑⍵}
       'fix' isSuffix 'suffix'  
       'fix' isSuffix 'suffix'  
Line 8: Line 8:
       'suff' isSuffix 'suffix'
       'suff' isSuffix 'suffix'
0
0
</source>
</syntaxhighlight>
We can also use an <source lang=apl inline>isPrefix</source> function directly by [[Reverse|reversing]] both its arguments. In the second definition below, this relation is written more succinctly in a [[tacit]] style using the [[Over]] operator.
We can also use an <syntaxhighlight lang=apl inline>isPrefix</syntaxhighlight> function directly by [[Reverse|reversing]] both its arguments. In the second definition below, this relation is written more succinctly in a [[tacit]] style using the [[Over]] operator.
<source lang=apl>
<syntaxhighlight lang=apl>
       isSuffix ← {(⊖⍺)isPrefix(⊖⍵)}
       isSuffix ← {(⊖⍺)isPrefix(⊖⍵)}
       isSuffix ← isPrefix⍥⊖
       isSuffix ← isPrefix⍥⊖
</source>
</syntaxhighlight>


In [[leading axis theory]], the [[cell shape]] of each k-[[cell]] in an array is a suffix of that array's [[shape]], while the [[frame]] is a [[prefix]] of the shape.
In [[leading axis theory]], the [[cell shape]] of each k-[[cell]] in an array is a suffix of that array's [[shape]], while the [[frame]] is a [[prefix]] of the shape.


[[Iverson notation]] included the notion of a suffix vector <math>\omega^j(n)</math> consisting of <math>n-j</math> zeros followed by <math>j</math> ones; such a vector could be used to produce a length-<math>j</math> suffix of a length-<math>n</math> vector using [[Compress]]. The earliest versions of [[APL\360]] adapted this notation by defining a suffix function <source lang=apl inline>n ⍵ j</source> before removing it in favor of [[Take]] with a negative left argument.
[[Iverson notation]] and very early APLs included the notion of a [[suffix vector]] <math>\omega^j(n)</math> consisting of <math>n-j</math> zeros followed by <math>j</math> ones; such a vector could be used to produce a length-<math>j</math> suffix of a length-<math>n</math> vector using [[Compress]].
 
[[Category:Array relationships]]

Navigation menu