Prototype: Difference between revisions
Jump to navigation
Jump to search
no edit summary
Miraheze>Adám Brudzewsky No edit summary |
Miraheze>Adám Brudzewsky No edit summary |
||
Line 1: | Line 1: | ||
The '''prototype''' of an array is, in the [[nested array model]], an array which gives information about the type and structure of its [[element]]s. 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, and to determine some [[identity element]]s. | |||
== Support== | == Support == | ||
A few dialects have [[Type]] as a [[primitive function]], and in those, the prototype is simply the type of the first element: | |||
<source lang=apl> | |||
However, an | ∊⊃ 1 2 'ab' | ||
┌─┬─┬──┐ | |||
│0│0│ │ | |||
└─┴─┴──┘ | |||
</source> | |||
{{Works in|[[Dyalog APL]] with [[migration level]]<nowiki>=</nowiki>0}} | |||
<source lang=apl> | |||
⊤↑ 1 2 'ab' | |||
┌─┬─┬──┐ | |||
│0│0│ │ | |||
└─┴─┴──┘ | |||
</source> | |||
{{Works in|[[NARS2000]]}} | |||
However, an array's prototype can always be determined by enclosing the first element in an empty array, and then coercing out a fill value: | |||
<source lang=apl> | |||
⊃ 0 ⍴ ⊂ 1 2 'ab' | |||
┌─┬─┬──┐ | |||
│0│0│ │ | |||
└─┴─┴──┘ | |||
</source> | |||
{{Works in|[[Dyalog APL]] with [[migration level]]<nowiki>=</nowiki>1}} | |||
<source lang=apl> | <source lang=apl> | ||
⊃ 0 ⍴ ⊂ 1 2 'ab' | ⊃ 0 ⍴ ⊂ 1 2 'ab' | ||
Line 11: | Line 31: | ||
└─┴─┴──┘ | └─┴─┴──┘ | ||
</source> | </source> | ||
{{Works in|[[Dyalog APL]] with [[migration level]]<nowiki>≥</nowiki>2, [[APL2]], [[APLX]]}} | |||
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 68: | Line 89: | ||
{{Works in|[[Dyalog APL]]}} | {{Works in|[[Dyalog APL]]}} | ||
{{APL programming language}} | {{APL programming language}} | ||