4,505
edits
(See also section with links to comparison tables on other pages) |
m (→See also) |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 18: | Line 18: | ||
| <syntaxhighlight lang=apl inline>></syntaxhighlight> || [[Mix]] || [[SHARP APL]], [[A]], [[A+]] | | <syntaxhighlight lang=apl inline>></syntaxhighlight> || [[Mix]] || [[SHARP APL]], [[A]], [[A+]] | ||
|- | |- | ||
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || [[Mix]] || [[APL2]], [[ISO/IEC 13751:2001]], [[APLX]], [[NARS2000]], [[GNU APL]], [[Kap]] | | <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || [[Mix]] || [[APL2]], [[ISO/IEC 13751:2001]], [[APL2C]], [[APLX]], [[NARS2000]], [[GNU APL]], [[Kap]] | ||
|- | |- | ||
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || [[First]] || [[ngn/apl]], [[Co-dfns]], [[dzaima/APL]], [[April]] | | <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || [[First]] || [[ngn/apl]], [[Co-dfns]], [[dzaima/APL]], [[April]] | ||
Line 24: | Line 24: | ||
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || Configurable || [[Dyalog APL]], [[APL*PLUS]], [[APL+Win]], [[APL64]] | | <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || Configurable || [[Dyalog APL]], [[APL*PLUS]], [[APL+Win]], [[APL64]] | ||
|} | |} | ||
== Function definition == | |||
{{Main|Function styles}} | |||
Dialects offer a variety of ways to create [[function]]s and [[operator]]s. The three major branches are [[defined function]]s, which use a header declaring the function and argument names, [[anonymous function]]s such as [[dfn]]s, which also consist of a list of statements but have no header and use fixed argument names, and [[tacit programming|tacit function]]s, which are created by manipulating existing functions with no reference to [[argument]]s. | |||
Defined functions were the dominant form for most of APL's history, with only some niche forms based on [[direct definition (notation)|direct definition notation]] appearing in the 1980s: the [[direct definition (operator)|direct definition operator]] in [[NARS]] and a library to translate this notation to defined functions in [[SHARP APL]]. [[Function assignment]], a necessary feature for tacit programming, began to appear in the 1980s, such as in [[Dyalog APL]] version 4.0 in 1986. However, [[train]]s, which make larger-scale tacit programming feasible, were not introduced to APL until around 2010. Dyalog's [[dfn]]s were introduced in 1996 to slow initial adoption; nearly all new dialects of the 2010s and later support a similar syntax. Because of the widespread use of dfns, several of these dialects no longer support a traditional function definition notation. | |||
== Numeric types == | == Numeric types == | ||
Line 52: | Line 59: | ||
The following table shows support for various APL features: nesting either with [[box]]es or the [[nested array model]], [[defined function]]s or similar syntax, [[control structure]]s, [[dfn]]-style anonymous functions, [[tacit]] programming, particularly with [[train]]s, [[complex number]]s, arbitrary-precision integers, [[Unicode]] support, and [[namespace]]s or a similar encapsulation feature. The precise syntax and capabilities of these features might differ between dialects that support them. | The following table shows support for various APL features: nesting either with [[box]]es or the [[nested array model]], [[defined function]]s or similar syntax, [[control structure]]s, [[dfn]]-style anonymous functions, [[tacit]] programming, particularly with [[train]]s, [[complex number]]s, arbitrary-precision integers, [[Unicode]] support, and [[namespace]]s or a similar encapsulation feature. The precise syntax and capabilities of these features might differ between dialects that support them. | ||
Dialects included in the first row include [[APL\360]], [[APL\1130]], [[APL*PLUS]] before II, [[APL/700]], [[APL.SV]], [[APL 5100]], [[MCM/70]], [[VS APL]], [[APL\3000]], and [[Aplette]]. [[Extended Dyalog APL]] and [[Dyalog APL Vision]] have the same feature | Dialects included in the first row include [[APL\360]], [[APL\1130]], [[APL*PLUS]] before II, [[APL/700]], [[APL.SV]], [[APL 5100]], [[MCM/70]], [[VS APL]], [[APL\3000]], and [[Aplette]]. Dates for [[APL+Win]] include those for APL*PLUS. [[Extended Dyalog APL]] and [[Dyalog APL Vision]] have the same feature set as [[Dyalog APL]]. | ||
{|class="wikitable sortable" | {|class="wikitable sortable" | ||
! Dialect !! Nesting !! [[Tradfn]]s !! [[Control structure|Control]] !! [[Dfn]]s | ! Dialect !! Nesting !! [[Tradfn]]s !! [[Control structure|Control]] !! [[Dfn]]s !! [[Tacit]] !! [[Complex]] !! Big int !! [[Unicode]] !! [[Namespace]] | ||
|- | |- | ||
| [[ | | [[APL\360]], [[APL.SV]], … || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| [[ | | [[APL+Win]] || {{Yes|Nested (1989)}} || {{Yes}} || {{Yes|1994}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes|2006}} | ||
|- | |- | ||
| [[ | | [[SHARP APL]] || {{Yes|Boxes (1981)}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes|1981}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| [[ | | [[NARS]] || {{Yes|Nested}} || {{Yes}} || {{No}} || {{Maybe|[[direct definition (operator)|direct def]]}} | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | |||
|- | |- | ||
| [[ | | [[Dyalog APL]] || {{Yes|Nested}} || {{Yes}} || {{Yes|1996}} || {{Yes|1996}} || {{Yes|2014}} || {{Yes|2011}} || {{No}} || {{Yes|2008}} || {{Yes|1994}} | ||
|- | |- | ||
| [[ | | [[APL2]] || {{Yes|Nested}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{Yes|1987}} | ||
|- | |- | ||
| [[ | | [[A+]] || {{Yes|Boxes}} || {{Yes}} || {{Yes}} || {{No}} || {{Maybe|Some}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| [[ | | [[SAX]] || {{Yes|Boxes}} || {{Yes}} || {{Yes}} || {{No}} || {{Maybe|Some}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| [[ | | [[APL2C]] || {{Yes|Nested}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| [[APLX]] || {{Yes|Nested}} | | [[APLX]] || {{Yes|Nested}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | ||
|- | |- | ||
| [[NARS2000]] || {{Yes|Nested}} | | [[NARS2000]] || {{Yes|Nested}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes|2009}} || {{Yes}} || {{Yes}} || {{Maybe|UCS-2}} || {{No}} | ||
|- | |- | ||
| [[VisualAPL]] || {{Yes|Nested}} | | [[VisualAPL]] || {{Yes|Nested}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| [[APL#]] || {{Yes|Nested}} | | [[APL#]] || {{Yes|Nested}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| [[ngn/apl]] || {{Yes|Nested}} | | [[ngn/apl]] || {{Yes|Nested}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{No}} | ||
|- | |- | ||
| [[GNU APL]] || {{Yes|Nested}} | | [[GNU APL]] || {{Yes|Nested}} || {{Yes}} || {{Maybe|If-else}} || {{Maybe|Limited}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| [[ | | [[April]] || {{Yes|Nested}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| [[ | | [[dzaima/APL]] || {{Yes|Nested}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| [[ | | [[APL\iv]] || {{Maybe|Lists}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{No}} | ||
|- | |- | ||
| [[ | | [[Kap]] || {{Yes|Nested}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} | ||
|- | |- | ||
| [[APL64]] || {{Yes|Nested}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} | |||
| [[APL64]] || {{Yes|Nested}} | |||
|} | |} | ||
Line 141: | Line 144: | ||
|- | |- | ||
| [[APL+Win]] || 1995 || {{Maybe|2019}} || || [[APL2000]] || || Portable | | [[APL+Win]] || 1995 || {{Maybe|2019}} || || [[APL2000]] || || Portable | ||
|- | |||
| [[APL2C]] || 2001 || {{Maybe|2002}} || || Tilman Otto || [[wikipedia:C (programming language)|C]] || Windows 9x/NT/2000 | |||
|- | |- | ||
| [[APLX]] || 2002 || {{Maybe|2016}} || {{No|2016}} || [[MicroAPL Ltd.]] || [[wikipedia:C_(programming_language)|C]], [[wikipedia:C++|C++]] || Portable | | [[APLX]] || 2002 || {{Maybe|2016}} || {{No|2016}} || [[MicroAPL Ltd.]] || [[wikipedia:C_(programming_language)|C]], [[wikipedia:C++|C++]] || Portable | ||
Line 183: | Line 188: | ||
* [[Leading axis theory#Adoption in APL]] | * [[Leading axis theory#Adoption in APL]] | ||
* [[Array notation#Comparison of array notations]] | * [[Array notation#Comparison of array notations]] | ||
* [[Timeline of APL primitives]] | |||
== External links == | == External links == | ||
* [https://omnibar.rubenverg.com Omnibar] lists all glyphs with their meanings and allows custom comparisons between dialects:[[File:Omnibar|center]] | * [https://omnibar.rubenverg.com Omnibar] lists all glyphs with their meanings and allows custom comparisons between dialects:[[File:Omnibar|center]] | ||
{{APL dialects}}[[Category:Lists]] | {{APL dialects}}[[Category:Lists]] |