Membership: Difference between revisions
(→Documentation: BQN link) |
m (Text replacement - "</source>" to "</syntaxhighlight>") Tags: Mobile edit Mobile web edit |
||
Line 14: | Line 14: | ||
0 0 1 | 0 0 1 | ||
0 0 1 | 0 0 1 | ||
</ | </syntaxhighlight> | ||
For [[nested array|nested arrays]], Membership tests for exact [[match]] between the elements. | For [[nested array|nested arrays]], Membership tests for exact [[match]] between the elements. | ||
Line 21: | Line 21: | ||
'CAT' 'DOG' 'MOUSE' ∊ 'CAT' 'FOX' 'DOG' 'LLAMA' | 'CAT' 'DOG' 'MOUSE' ∊ 'CAT' 'FOX' 'DOG' 'LLAMA' | ||
1 1 0 | 1 1 0 | ||
</ | </syntaxhighlight> | ||
=== Leading axis model === | === Leading axis model === | ||
The behavior of Membership was changed to follow [[leading axis model]] in some implementations such as [[J]] (spelled <source lang=j inline>e.</ | The behavior of Membership was changed to follow [[leading axis model]] in some implementations such as [[J]] (spelled <source lang=j inline>e.</syntaxhighlight>). In this case, if the right argument is a higher-[[rank]] array, the [[cell|cells]] of the left argument with appropriate rank are compared against the [[major cell|major cells]] of the right argument. | ||
<source lang=j> | <source lang=j> | ||
Line 42: | Line 42: | ||
1 1 1 | 1 1 1 | ||
1 1 1 | 1 1 1 | ||
</ | </syntaxhighlight> | ||
In other dialects, a leading axis membership function can be defined as: | In other dialects, a leading axis membership function can be defined as: | ||
<source lang=apl> | <source lang=apl> | ||
Line 52: | Line 52: | ||
'able' Membership mat | 'able' Membership mat | ||
1 | 1 | ||
</ | </syntaxhighlight>{{Works in|[[Dyalog APL]], [[NARS2000]], [[dzaima/APL]], [[Extended Dyalog APL]], [[GNU APL]]}} | ||
== See also == | == See also == |
Revision as of 21:16, 10 September 2022
∊
|
Membership (∊
), also called Member Of or Member In, is a dyadic primitive function which tests if each of the elements of the left argument appears as an element of the right argument. Membership derives from the traditional mathematical notation (Element of) and therefore uses that glyph (lunate epsilon).
Examples
Both arguments can be arrays of any shape. Each element of the left argument is tested against elements of the right argument, and the result is a boolean array having the same shape as the left argument.
<source lang=apl>
'THIS NOUN'∊'THAT WORD'
1 1 0 0 1 0 1 0 0
3 6 9∊3 3⍴⍳9
1 1 1
(3 3⍴⍳9)∊3 6 9
0 0 1 0 0 1 0 0 1 </syntaxhighlight>
For nested arrays, Membership tests for exact match between the elements.
<source lang=apl>
'CAT' 'DOG' 'MOUSE' ∊ 'CAT' 'FOX' 'DOG' 'LLAMA'
1 1 0 </syntaxhighlight>
Leading axis model
The behavior of Membership was changed to follow leading axis model in some implementations such as J (spelled <source lang=j inline>e.</syntaxhighlight>). In this case, if the right argument is a higher-rank array, the cells of the left argument with appropriate rank are compared against the major cells of the right argument.
<source lang=j>
]mat=.>'able';'acre';'idle'
able acre idle
'able' e. mat
1
(<'able') e. mat
0
'ab' e. mat
0
(3 3 4$'able') e. mat NB. the resulting shape is trailing axes (corresponding to the major cells of mat) removed
1 1 1 1 1 1 1 1 1 </syntaxhighlight> In other dialects, a leading axis membership function can be defined as: <source lang=apl>
Membership←{(≢⍵)≥⍵⍳⍺} ⎕←mat←3 4⍴'ableacreidle'
able acre idle
'able' Membership mat
1
</syntaxhighlight>
See also
External links
Documentation
- Dyalog
- APLX
- J Dictionary, NuVoc
- BQN