Difference between revisions of "From"
(dzaima/APL update) |
(extension) |
||
Line 18: | Line 18: | ||
bdace | bdace | ||
</source>{{Works in|[[dzaima/APL]], [[Extended Dyalog APL]]}} | </source>{{Works in|[[dzaima/APL]], [[Extended Dyalog APL]]}} | ||
+ | == Potential extension == | ||
+ | Select can be defined as <source lang=apl inline>⌷⍨∘⊃⍨⍤0 ∞</source> thus allowing both the above usage and "scatter point indexing": | ||
+ | <source lang=apl> | ||
+ | 1 4 3 ⊇ 4 4⍴⎕A | ||
+ | ABCD | ||
+ | MNOP | ||
+ | IJKL | ||
+ | (1 1)(4 4)(3 4) ⊇ 4 4⍴⎕A | ||
+ | APL | ||
+ | </source> | ||
{{APL built-ins}} | {{APL built-ins}} |
Revision as of 10:51, 22 April 2020
⊇
|
Select (⊇
) (jokingly referred to as Sane Indexing) is a primitive function that allows selecting multiple major cells using indices of the cells. It is equivalent to ⌷⍨∘⊂⍨
and ⌷⍤0 ∞
, only providing a neater notation for such a fundamental concept. It was introduced in Extended Dyalog APL, and then adopted into dzaima/APL.
Common usage
Select is commonly used to reorder the major cells of an array. For example, the following shuffles any array into random order:
Shuffle←?⍨∘≢⊇⊢
Shuffle 'abcdef'
fbdcea
Without Select, one would have to write Shuffle←⊢⌷⍨∘⊂?⍨∘≢
.
In a case where the left argument is a permutation vector for the right argument, the functionality can rightfully be called Permute.
Select especially cleans up expressions for reordering. An ascending sort can be represented as ⍋⊇⊢
and "sort by" can be written as ⊇⍨∘⍋
:
'abcde' ⊇⍨∘⍋ 3 1 4 1 5
bdace
Potential extension
Select can be defined as ⌷⍨∘⊃⍨⍤0 ∞
thus allowing both the above usage and "scatter point indexing":
1 4 3 ⊇ 4 4⍴⎕A
ABCD
MNOP
IJKL
(1 1)(4 4)(3 4) ⊇ 4 4⍴⎕A
APL