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).
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 define it on non-scalars, but with differing definitions.
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
The two glyphs commonly used for Disclose are Right Shoe and Up Arrow. The original NARS paper specified monadic ↑
as Mix and ⊃
as First, so Dyalog and STSC implemented Dyalog APL and APL*PLUS accordingly. IBM decided to swap them in APL2, causing the others to implement Migration Level, as APL2 was seen as the authoritative implementation. When the ISO standard was written, it closely followed APL2, causing APLX, NARS2000, GNU APL, and ngn/apl to adopt these notations. However, ngn/apl later switched to follow Dyalog.
References
- ↑ Jim Brown. "A Generalization of APL" (Ph.D. thesis). 1971.