Disclose: Difference between revisions

Jump to navigation Jump to search
Clean up, and avoid claiming up arrow can mean Disclose as it's never associated with that name
No edit summary
(Clean up, and avoid claiming up arrow can mean Disclose as it's never associated with that name)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Built-in|Disclose|⊃}} is a [[monadic function]] is [[Nested array model|nested]] APLs which reduces the level of nesting of an array. However, its treatment of non-scalars varies between dialects. Some dialects have it extract the argument's initial element in [[ravel order]], while others have it combine the array's elements (requiring conforming shapes or padding with [fill element]]s). Depending on which approach is taken, it is common to use the unambiguous names [[First]] and [Mix]] for these two functions.
{{Built-in|Disclose|⊃}} or '''Reveal''' is a [[monadic function]] in [[Nested array model|nested]] APLs which reduces the level of nesting of an array. It may refer to:


For a discussion of all uses of the [[glyph]] <code>⊃</code>, see [[Right Shoe]].
* [[First]], a the function extracting its argument's initial element in [[ravel order]].
* [[Mix]], a function combining its argument's elements (requiring conforming shapes or padding with [[fill element]]s).


These two meanings are distributed among the [[glyphs]] [[Right Shoe]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>) and [[Up Arrow]] (<syntaxhighlight lang=apl inline>↑</syntaxhighlight>) in nested APLs; the name "Disclose" is usually used for whichever meaning is represented by <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> and never for the one represented by <syntaxhighlight lang=apl inline>↑</syntaxhighlight>, which is called "First" or "Mix".
In the [[SHARP APL]] family, the behavior of Mix follows automatically by giving Disclose a [[function rank]] of 0. Disclose returns the contents of each [[box]] in an array, and rank treats these results as the cells of a result array.
== History ==
Early experiments in array nesting usually defined a primitive to extract the contents of a nested [[scalar]], but did not always specify how it should behave on an array. [[Jim Brown]]'s "A Generalization of APL"<ref>[[Jim Brown]]. [http://www.softwarepreservation.org/projects/apl/Books/AGENERALIZATIONOFAPL "A Generalization of APL"] (Ph.D. thesis). 1971.</ref> stated that it "may be undefined" on non-scalar arrays. However, all dialects do extend it to non-scalars, either as First or Mix.
[[STSC]]'s [[NARS]], the first nested APL released, defined Disclose <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> to be First, leaving monadic <syntaxhighlight lang=apl inline>↑</syntaxhighlight> as Mix, and [[Dyalog APL]] followed this choice. But [[IBM]] later released [[APL2]] with the definitions the other way around, a choice eventually adopted by the nested APL standard [[ISO/IEC 13751:2001]]. Due to the perceived authority of APL2, later dialects such as [[APLX]], [[NARS2000]], and [[GNU APL]] generally follow the APL2 definition, and Dyalog as well as STSC's [[APL*PLUS]] implement [[Migration Level]] to allow programs to select it. However, the NARS definition remains the default in Dyalog, causing it to be adopted by some dialects such as [[April]], [[dzaima/APL]], and [[ngn/apl]].
== References ==
<references/>
{{APL built-ins}}[[Category:Primitive functions]]
{{APL built-ins}}[[Category:Primitive functions]]

Navigation menu