Prototype: Difference between revisions

Jump to navigation Jump to search
803 bytes added ,  12:41, 13 November 2019
no edit summary
Miraheze>Adám Brudzewsky
m (Adám Brudzewsky moved page Array prototype to Prototype over redirect: Merge with primitive function)
Miraheze>Adám Brudzewsky
No edit summary
Line 1: Line 1:
In the [[nested array model]], an array's '''prototype''' is an array which gives information about the type and structure of its [[Element|elements]]. It is derived from the first element of the array in [[ravel order]], or, if the array is [[Empty array|empty]], from information stored alongside the array (usually this information is just the prototype itself). An array's prototype is used as a [[fill element]] for operations involving that array.
{{Built-ins|Prototype|∊|⊤}} is a [[monadic function]] which in the [[nested array model]] gives information about the type and structure of its argument array's [[element]]s. The result is derived from the first element of the array in [[ravel order]], or, if the array is [[Empty array|empty]], from information stored alongside the array (usually this information is just the prototype itself). An array's prototype is used as a [[fill element]] for operations involving that array, and to determine some [[identity element]]s.
 
== Support==
Few dialects have Prototype as a [[primitive function]]. [[Dyalog APL]] uses <source lang=apl inline>∊</source> (as in ''prototypical '''e'''lement''), but only when [[migration level]] is 0, while [[NARS2000]] uses [[monadic]] <source lang=apl inline>⊤</source> (resembling the Latin letter '''T''' for '''''T'''ype'').
 
However, an arrays prototype can always be determined by enclosing the array in an empty array, and then coercing our a fill value. Since prototypes are used as fill elements, the resulting array will be the prototype of the original array:
<source lang=apl>
      ⊃ 0 ⍴ ⊂ 1 2 'ab'
┌─┬─┬──┐
│0│0│  │
└─┴─┴──┘
</source>


APLs with a [[flat array model]] do not typically store prototype information, instead using only the array's type ([[character]], [[numeric]], or [[Box|boxed]]) to determine its [[Fill element|fills]].
APLs with a [[flat array model]] do not typically store prototype information, instead using only the array's type ([[character]], [[numeric]], or [[Box|boxed]]) to determine its [[Fill element|fills]].
Line 57: Line 68:
{{Works in|[[Dyalog APL]]}}
{{Works in|[[Dyalog APL]]}}
{{APL programming language}}
{{APL programming language}}
{{APL built-ins}}

Navigation menu