Timeline of APL primitives: Difference between revisions
Jump to navigation
Jump to search
(Complex Floor at SHARP) |
(Add From/Select) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
! Year !! Dialect !! Primitives | ! Year !! Dialect !! Primitives | ||
|- | |- | ||
| 1965 || [[IVSYS/7090]] || [[Identity]] (<syntaxhighlight lang=apl inline>+</syntaxhighlight>), [[Add]], [[Negate]], [[Subtract]], [[Multiply]], [[Divide]], [[Floor]], [[Ceiling]], [[Minimum]], [[Maximum]], [[Absolute value]], [[Modulus]], [[Exponential]], [[Power]], [[Not]], [[And]], [[Or]], [[comparison]]s, [[Iota]], [[Index of]], [[Shape]], [[Reshape]], [[Ravel]], [[Catenate]], [[Rotate]] (as <syntaxhighlight lang=apl inline>↑↓</syntaxhighlight>), [[Member of]], [[Encode]], [[Decode]], [[Reduce]], [[Compress]], [[Expand]], [[Inner product]], [[Outer product]], [[Assignment]], [[Bracket indexing]], [[Branch]]/[[Label]] | | 1965 || [[IVSYS/7090]] || [[Identity]] (<syntaxhighlight lang=apl inline>+</syntaxhighlight>), [[Add]], [[Negate]], [[Subtract]], [[Multiply]], [[Divide]], [[Floor]], [[Ceiling]], [[Minimum]], [[Maximum]], [[Absolute value]], [[Modulus]], [[Exponential]], [[Power]], [[Not]], [[And]], [[Or]], [[comparison]]s, [[Iota]], [[Index of]], [[Shape]], [[Reshape]], [[Ravel]], [[Catenate]], [[Rotate]] (as <syntaxhighlight lang=apl inline>↑↓</syntaxhighlight>), [[Member of]], [[Encode]], [[Decode]], [[Reduce]], [[Compress]], [[Expand]], [[Inner product]], [[Outer product]], [[Assignment]] (including indexed), [[Bracket indexing]], [[Branch]]/[[Label]] | ||
|- | |- | ||
| 1966 || [[APL\360]] || [[Reciprocal]], [[Natural Logarithm]], [[Factorial]], [[Combinations]], [[Roll]], [[Transpose]], [[Reverse]]/[[Rotate]] (<syntaxhighlight lang=apl inline>⌽</syntaxhighlight>), [[Function axis]] | | 1966 || [[APL\360]] || [[Reciprocal]], [[Natural Logarithm]], [[Factorial]], [[Combinations]], [[Roll]], [[Transpose]], [[Reverse]]/[[Rotate]] (<syntaxhighlight lang=apl inline>⌽</syntaxhighlight>), [[Function axis]] | ||
Line 15: | Line 15: | ||
|- | |- | ||
| 1973 || [[APL.SV]] || [[Execute]], [[Format]], [[Scan]] | | 1973 || [[APL.SV]] || [[Execute]], [[Format]], [[Scan]] | ||
|- | |||
| 1974 || [[APL/700]] || [[Union]], [[Intersection]], [[Set Difference]] (but these functions only return unique elements), [[modified assignment]] (scalar dyadics only) | |||
|- | |- | ||
| 1980 || [[SHARP APL]] || [[GCD]]/[[LCM]] extending [[Or]]/[[And]] (proposed [[Eugene McDonnell|McDonnell]] 1975) | | 1980 || [[SHARP APL]] || [[GCD]]/[[LCM]] extending [[Or]]/[[And]] (proposed [[Eugene McDonnell|McDonnell]] 1975) | ||
Line 27: | Line 29: | ||
| [[Partitioned Enclose]] (<syntaxhighlight lang=apl inline>⊂</syntaxhighlight>), [[First]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>), [[Type]] (<syntaxhighlight lang=apl inline>⊤</syntaxhighlight>), [[Split]] (<syntaxhighlight lang=apl inline>↓</syntaxhighlight>), [[Mix]] (<syntaxhighlight lang=apl inline>↑</syntaxhighlight>), [[Not Match]], [[Catenate First]] (<syntaxhighlight lang=apl inline>⍪</syntaxhighlight>), [[Compose]] (<syntaxhighlight lang=apl inline>∘</syntaxhighlight>), [[Each]] (<syntaxhighlight lang=apl inline>¨</syntaxhighlight>), [[Zilde]], [[Choose indexing]] | | [[Partitioned Enclose]] (<syntaxhighlight lang=apl inline>⊂</syntaxhighlight>), [[First]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>), [[Type]] (<syntaxhighlight lang=apl inline>⊤</syntaxhighlight>), [[Split]] (<syntaxhighlight lang=apl inline>↓</syntaxhighlight>), [[Mix]] (<syntaxhighlight lang=apl inline>↑</syntaxhighlight>), [[Not Match]], [[Catenate First]] (<syntaxhighlight lang=apl inline>⍪</syntaxhighlight>), [[Compose]] (<syntaxhighlight lang=apl inline>∘</syntaxhighlight>), [[Each]] (<syntaxhighlight lang=apl inline>¨</syntaxhighlight>), [[Zilde]], [[Choose indexing]] | ||
|- | |- | ||
| 1981 || [[SHARP APL]] || [[function rank]], [[Close composition|close]] [[Over]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>), [[Atop]] (<syntaxhighlight lang=apl inline>⍥</syntaxhighlight>), [[Under]] (<syntaxhighlight lang=apl inline>¨</syntaxhighlight>) ([[Operators and Functions]] 1978; not widely adopted) <br/> [[complex]] extensions: [[Circular]] functions 8 and up ([[Eugene McDonnell|McDonnell]] 1977), [[Conjugate]] (proposed Paul Penfield 1977; IBM | | 1981 || [[SHARP APL]] || [[function rank]], [[Close composition|close]] [[Over]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>), [[Atop]] (<syntaxhighlight lang=apl inline>⍥</syntaxhighlight>), [[Under]] (<syntaxhighlight lang=apl inline>¨</syntaxhighlight>) ([[Operators and Functions]] 1978; not widely adopted) <br/> [[complex]] extensions: [[Circular]] functions 8 and up ([[Eugene McDonnell|McDonnell]] 1977), [[Conjugate]] (proposed Paul Penfield 1977; IBM documentation by 1975) | ||
|- | |- | ||
| 1982 || [[SHARP APL]] || [[Determinant]] (<syntaxhighlight lang=apl inline>.</syntaxhighlight>) ([[Ken Iverson|Iverson]] 1982) | | 1982 || [[SHARP APL]] || [[Determinant]] (<syntaxhighlight lang=apl inline>.</syntaxhighlight>) ([[Ken Iverson|Iverson]] 1982) | ||
Line 35: | Line 37: | ||
| 1983 || [[SHARP APL]] || [[Rank operator]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>) ([[Arthur Whitney|Whitney]] 1982) <br/> [[Left]] (<syntaxhighlight lang=apl inline>⊣</syntaxhighlight>), [[Right]] (<syntaxhighlight lang=apl inline>⊢</syntaxhighlight>), [[Conditional enclose]]/[[Link]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>) | | 1983 || [[SHARP APL]] || [[Rank operator]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>) ([[Arthur Whitney|Whitney]] 1982) <br/> [[Left]] (<syntaxhighlight lang=apl inline>⊣</syntaxhighlight>), [[Right]] (<syntaxhighlight lang=apl inline>⊢</syntaxhighlight>), [[Conditional enclose]]/[[Link]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>) | ||
|- | |- | ||
| 1984 || [[APL2]] || [[ | | 1984 || [[APL2]] || [[First]] (<syntaxhighlight lang=apl inline>↑</syntaxhighlight>) and [[Mix]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>) opposite to NARS, [[Partition]] (<syntaxhighlight lang=apl inline>⊂</syntaxhighlight>), [[Enlist]] (<syntaxhighlight lang=apl inline>∊</syntaxhighlight>), [[Find]] (<syntaxhighlight lang=apl inline>⍷</syntaxhighlight>), [[Depth]] (<syntaxhighlight lang=apl inline>≡</syntaxhighlight>), [[Index (function)|Index]] (<syntaxhighlight lang=apl inline>⌷</syntaxhighlight>), [[selective assignment]] | ||
|- | |- | ||
| 1987 || [[SHARP APL]] || [[Table]] (<syntaxhighlight lang=apl inline>⍪</syntaxhighlight>) <br/> short left argument for [[Take]], [[Drop]] | | 1987 || [[SHARP APL]] || [[Table]] (<syntaxhighlight lang=apl inline>⍪</syntaxhighlight>) <br/> short left argument for [[Take]], [[Drop]] | ||
|- | |- | ||
| 1989 || [[SHARP APL]] || [[Nub Sieve]] (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>), [[ | | 1989 || [[SHARP APL]] || [[Nub Sieve]] (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>), [[Raze]] (<syntaxhighlight lang=apl inline>↓</syntaxhighlight>) ([[A Dictionary of APL]] 1987) | ||
|- | |||
| 1993 || [[SAX]] || [[From]] (<syntaxhighlight lang=apl inline>{</syntaxhighlight>) ([[Rationalized APL]] 1983) | |||
|- | |- | ||
| 2009 || [[NARS2000]] || [[Function train]]s (proposed [[Ken Iverson|Iverson]] and [[Eugene McDonnell|McDonnell]] 1989; [[J]] 1990) | | 2009 || [[NARS2000]] || [[Function train]]s (proposed [[Ken Iverson|Iverson]] and [[Eugene McDonnell|McDonnell]] 1989; [[J]] 1990) | ||
|- | |- | ||
Line 69: | Line 71: | ||
* [[Timeline of influential array languages]] | * [[Timeline of influential array languages]] | ||
* [[Comparison of APL dialects]] | * [[Comparison of APL dialects]] | ||
{{APL built-ins}}[[Category:Timelines | {{APL built-ins}}[[Category:Timelines]] |
Latest revision as of 18:17, 29 August 2024
The following table lists APL primitives, primitive extensions, and primitive-like syntax that are implemented across many dialects, or are precursors of such features. Features are ordered by the first APL dialect to implement them, and previous definitions in other array languages or as proposals are indicated in parentheses. Because primitives tend to have multiple names and may even change name within a dialect, common modern names are used rather than the name when introduced.