Disclose
⊃
|
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.