Disclose: Difference between revisions
m (Text replacement - "</source>" to "</syntaxhighlight>") |
(Clean up, and avoid claiming up arrow can mean Disclose as it's never associated with that name) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
* [[Mix]], a function combining its argument's elements (requiring conforming shapes or padding with [[fill element]]s). | * [[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 == | == 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 == | ||
<references/> | <references/> | ||
{{APL built-ins}}[[Category:Primitive functions]] | {{APL built-ins}}[[Category:Primitive functions]] |
Latest revision as of 21:14, 19 February 2024
⊃
|
Disclose (⊃
) or Reveal is a monadic function in nested APLs which reduces the level of nesting of an array. It may refer to:
- 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 elements).
These two meanings are distributed among the glyphs Right Shoe (⊃
) and Up Arrow (↑
) in nested APLs; the name "Disclose" is usually used for whichever meaning is represented by ⊃
and never for the one represented by ↑
, 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"[1] 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 ⊃
to be First, leaving monadic ↑
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
- ↑ Jim Brown. "A Generalization of APL" (Ph.D. thesis). 1971.