Nest
Nest (⊆
, ⊃
), also called Conditional Enclose or Enclose If Simple (commonly abbreviated as eis), is a monadic primitive function that applies Enclose to the given argument, but only if it is simple. Nest first appeared as an extension to SHARP APL[1] using the glyph <source lang=apl inline>⊃</syntaxhighlight>, and was added to Dyalog APL 16.0 using the glyph <source lang=apl inline>⊆</syntaxhighlight>.
Examples
Nest is useful when a nested array is expected but the user may supply a simple array instead. For example, consider a function which expects one or more English words in uppercase and counts the words that include the letter E.
<source lang=apl>
EWords←{+/'E'∊¨⍵}
</syntaxhighlight>
If the user gives multiple words in the usual notation, it works correctly:
<source lang=apl>
EWords 'I' 'ATE' 'DINNER' 'AND' 'WENT' 'TO' 'SLEEP' ⍝ ATE, DINNER, WENT, SLEEP
4
</syntaxhighlight>
But if the user gives only one word, <source lang=apl inline>EWords</syntaxhighlight> will count E's in each letter instead, giving the wrong answer:
<source lang=apl>
EWords 'SLEEP'
2
</syntaxhighlight>
In this case, the programmer can apply Nest to the argument so that the array has a consistent structure.
<source lang=apl>
EWords2←{+/'E'∊¨⊆⍵} EWords2 'I' 'ATE' 'DINNER' 'AND' 'WENT' 'TO' 'SLEEP'
4
EWords2 'SLEEP'
1
</syntaxhighlight>
External links
Documentation
References
- ↑ "Language Extensions of May 1983". SATN-45, 1983-05-02.