Comparison of APL dialects: Difference between revisions

Jump to navigation Jump to search
m
(→‎Language features: Collapse the Dyalog extensions)
 
(27 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 25: Line 25:
|}
|}


== Complex numbers ==
== Function definition ==
{{Main|Function styles}}


Most dialects support [[complex number]]s, but some ([[dzaima/APL]], [[APLX]], [[APL+Win]]) don't. Dialects with complex numbers also extend [[Circular]] (<syntaxhighlight lang=apl inline>○</syntaxhighlight>) to left arguments designed for complex numbers.
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 ==
{{Main|Number}}
 
Traditionally, APL supports only one numeric type that is visible to the user, such as a floating-point number, or complex number whose components are floating-point. Other numeric types may be used by the implementation, but only for optimization: for example, [[APL\360]] uses packed 1-bit [[Boolean]] and 4-bit integer arrays that are automatically converted to float if an operation yields a value that doesn't fit in the type. [[ISO/IEC 13751:2001]] specifies that different representations of a number must be indistinguishable to a conforming program (which can call primitives but not implementation-specific system functions).
 
Most often the numeric type is a 64-bit float, for instance [[wikipedia:IBM_hexadecimal_floating_point|HFP]] in early [[IBM]] dialects and [[wikipedia:IEEE 754|IEEE 754]] in new dialects since the 1980s. [[Dyalog APL]] supports 128-bit [[decimal float]]s by setting <syntaxhighlight lang=apl inline>⎕FR</syntaxhighlight>. Modern dialects tend to support [[complex number]]s, with exceptions including [[dzaima/APL]], [[APLX]], and [[APL+Win]]. Dialects with complex numbers also extend [[Circular]] (<syntaxhighlight lang=apl inline>○</syntaxhighlight>) to left arguments designed for complex numbers.
 
Some newer dialects provide additional types that are distinguishable from floats, often by greater precision. Extended-precision integers are one possibility: for example, [[dzaima/APL]] provides these if requested with a trailing <code>L</code> in a numeric literal or <syntaxhighlight lang=apl inline>⎕BIG</syntaxhighlight>, while [[Kap]] uses exact rational numbers by default. [[NARS2000]] supports numerous numeric types, and [[April]] provides access to the [[wikipedia:Common Lisp|Common Lisp]] numeric tower, which also includes many types. [[GNU APL]] doesn't support arbitrary precision, but uses 64-bit integers by default, much like [[J]] or [[K]].


== Conformability ==
== Conformability ==
Line 34: Line 46:


Furthermore, dialects that implement the [[Rank operator]] differ in their conformability rules for frames. [[Dyalog APL]] and [[SHARP APL]] implement scalar agreement only, [[NARS2000]] implements singleton agreement, and [[A+]] implements leading axis agreement (in addition to extra options allowing the programmer to specify outer-product-like treatment of some axes).
Furthermore, dialects that implement the [[Rank operator]] differ in their conformability rules for frames. [[Dyalog APL]] and [[SHARP APL]] implement scalar agreement only, [[NARS2000]] implements singleton agreement, and [[A+]] implements leading axis agreement (in addition to extra options allowing the programmer to specify outer-product-like treatment of some axes).
== Index origin ==
A few dialects fix the [[index origin]] to 0 rather than allowing it to be configured: [[A+]], [[APL#]], [[ngn/apl]], [[Co-dfns]], and [[Kap]].


== Depth ==
== Depth ==
Line 43: 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-set as [[Dyalog APL]].
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"
! 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}}        || {{Yes}} || {{Yes}}          || {{No}}            || {{No}}        || {{No}}      || {{No}}  || {{No}}          || {{No}}
|-
| [[NARS2000]]            || {{Yes|Nested}}        || {{Yes}} || {{Yes}}          || {{Yes}}          || {{Yes|2009}}  || {{Yes}}      || {{Yes}} || {{Maybe|UCS-2}} || {{No}}
|-
| [[VisualAPL]]          || {{Yes|Nested}}        || {{Yes}} || {{Yes}}          || {{No}}            || {{No}}        || {{No}}      || {{No}}  || {{Yes}}        || {{Yes}}
|-
| [[APL#]]                || {{Yes|Nested}}        || {{No}}  || {{Yes}}          || {{Yes}}          || {{Yes}}        || {{No}}      || {{No}}  || {{Yes}}        || {{Yes}}
|-
| [[ngn/apl]]            || {{Yes|Nested}}        || {{No}}  || {{No}}            || {{Yes}}          || {{Yes}}        || {{Yes}}      || {{No}}  || {{Yes}}        || {{No}}
|-
| [[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}}
|}
 
== Development and platform ==
 
Shown are the release year, year of last release for inactive languages, withdrawal or discontinuation year for products that are no longer available, developer, implementation language, and host system. Systems capable of being compiled for multiple native hosts are indicated as "portable".


{|class="wikitable sortable"
{|class="wikitable sortable"
! Dialect                !! Nesting !! [[Tradfn]]s !! [[Control structure|Control]] !! [[Dfn]]s !! [[Tacit]]  !! [[Complex]] !! Big int !! Unicode        !! [[Namespace]]
! Dialect                !! Released !! Inactive      !! Dropped      !! Developer                                    !! Language                                                                                                  !! Host
|-
| [[APL\1130]]            || 1968    ||                || {{No|?}}    || [[IBM]]                                       || 1130 assembler                                                                                            || [[wikipedia:IBM 1130|IBM 1130]]
|-
| [[APL\360]]             || 1968    || {{Maybe|1972}} || {{No|2012}} || [[IBM]]                                      || [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]]                                              || S/360–z/Architecture, IBM 5100+
|-
| [[APL*PLUS]]           || 1970    || {{Maybe|1995}} || {{No|2012}} || [[STSC]]                                      || [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]], [[wikipedia:C (programming language)|C]]    || S/370, TRS-80, portable
|-
| [[APL/700]]            || 1971?    ||                || {{No|?}}    || [[wikipedia:Burroughs Corporation|Burroughs]] || [[wikipedia:ALGOL 60|ALGOL 60]]                                                                            || Burroughs [[wikipedia:Burroughs_large_systems#B6700_and_B7700|B 6700/B 7700]]
|-
| [[APL.SV]]              || 1973    ||                || {{No|?}}    || [[IBM]]                                       || [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]]                                               ||
|-
|-
| [[APL\360]], [[APL.SV]], … || {{No}}      || {{Yes}} || {{No}}            || {{No}}           || {{No}}        || {{No}}  || {{No}}  || {{No}}          || {{No}}
| [[APL 5100]]           || 1976    ||               || {{No|?}}     || [[IBM]]                                      || [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]]                                              || [https://en.wikipedia.org/wiki/IBM_5100 IBM 5100]
|-
|-
| [[SHARP APL]]           || {{Yes|Boxes}}  || {{Yes}} || {{No}}            || {{No}}           || {{No}}        || {{Yes}} || {{No}}  || {{No}}          || {{No}}
| [[MCM/70]]             || 1974    ||               || {{No|1983}} || MCM                                          ||                                                                                                           || MCM/70
|-
|-
| [[NARS]]               || {{Yes|Nested}}  || {{Yes}} || {{No}}           || {{Maybe|[[direct definition (NARS)|direct def]]}}
| [[VS APL]]             || 1976    ||               || {{No|?}}     || [[IBM]]                                       || [[wikipedia:IBM_Basic_Assembly_Language_and_successors|BAL]]                                              || OS/VS, DOS/VS
                                                                                                  | {{No}}        || {{No}}  || {{No}}  || {{No}}          || {{No}}
|-
|-
| [[Dyalog APL]]         || {{Yes|Nested}}  || {{Yes}} || {{Yes}}           || {{Yes}}          || {{Yes}}       || {{Yes}} || {{No}}  || {{Yes}}        || {{Yes}}
| [[SHARP APL]]           || 1976    || {{Maybe|1989}} || {{No|1993?}} || [[IPSA]]                                      ||                                                                                                           || S/370, later portable
|-
|-
| [[APL2]]               || {{Yes|Nested}}  || {{Yes}} || {{No}}            || {{No}}           || {{No}}        || {{Yes}} || {{No}}  || {{No}}          || {{Yes}}
| [[APL\3000]]           || 1976    ||               || {{No|1980s}} || [[wikipedia:Hewlett-Packard|Hewlett-Packard]] ||                                                                                                           || [[wikipedia:HP 3000|HP 3000]] Series II / III
|-
|-
| [[A+]]                 || {{Yes|Boxes}}  || {{Yes}} || {{Yes}}          || {{No}}            || {{Maybe|Some}} || {{No}}  || {{No}}  || {{No}}          || {{No}}
| [[NARS]]               || 1981    ||               || {{No|1989?}} || [[STSC]]                                      || 370 assembler, APL                                                                                        || [[wikipedia:System/370|System/370]]
|-
|-
| [[APL*PLUS II]]         || {{Yes|Nested}}  || {{Yes}} || {{Yes}}          || {{No}}            || {{No}}        || {{No}}  || {{No}}  || {{No}}          || {{No}}
| [[Dyalog APL]]         || 1983    ||               ||             || [[Dyalog Ltd.]]                              || [[wikipedia:C (programming language)|C]], [[wikipedia:C++|C++]], APL                                      || Portable
|-
|-
| [[SAX]]                 || {{Yes|Boxes}}  || {{Yes}} || {{Yes}}           || {{No}}            || {{Maybe|Some}} || {{No}}  || {{No}}  || {{No}}          || {{No}}
| [[A+]]                 || 1988    || {{Maybe|2014}} ||             || [[Arthur Whitney]]                            || [[wikipedia:C++|C++]]                                                                                      || Portable
|-
|-
| [[APL+Win]]             || {{Yes|Nested}}  || {{Yes}} || {{Yes}}          || {{No}}            || {{No}}        || {{No}}  || {{No}}  || {{No}}          || {{Yes}}
| [[APL2]]               || 1984    ||               ||             || [[IBM]]                                      ||                                                                                                           || IBM mainframes, portable
|-
|-
| [[APLX]]               || {{Yes|Nested}}  || {{Yes}} || {{Yes}}           || {{No}}            || {{No}}         || {{No}}  || {{No}}  || {{No}}          || {{No}}
| [[SAX]]                 || 1993    || {{Maybe|2000}} || {{No|2017?}} || [[Soliton]]                                  || [[wikipedia:C (programming language)|C]]                                                                  || Portable
|-
|-
| [[NARS2000]]           || {{Yes|Nested}}  || {{Yes}} || {{Yes}}           || {{Yes}}          || {{Yes}}        || {{Yes}} || {{Yes}} || {{Maybe|UCS-2}} || {{No}}
| [[APL+Win]]             || 1995    || {{Maybe|2019}} ||             || [[APL2000]]                                  ||                                                                                                           || Portable
|-
|-
| [[VisualAPL]]           || {{Yes|Nested}}  || {{Yes}} || {{Yes}}           || {{No}}            || {{No}}        || {{No}}  || {{No}}  || {{Yes}}        || {{Yes}}
| [[APL2C]]               || 2001    || {{Maybe|2002}} ||             || Tilman Otto                                  || [[wikipedia:C (programming language)|C]]                                                                  || Windows 9x/NT/2000
|-
|-
| [[APL#]]                || {{Yes|Nested}}  ||colspan=3 {{Yes|Hybrid}}                           || {{No}}         || {{No}}  || {{No}}  || {{Yes}}        || {{Yes}}
| [[APLX]]                || 2002    || {{Maybe|2016}} || {{No|2016}} || [[MicroAPL Ltd.]]                            || [[wikipedia:C_(programming_language)|C]], [[wikipedia:C++|C++]]                                            || Portable
|-
|-
| [[ngn/apl]]             || {{Yes|Nested}}  || {{No}}  || {{No}}           || {{Yes}}          || {{Yes}}        || {{Yes}} || {{No}}  || {{Yes}}        || {{No}}
| [[NARS2000]]           || 2006    || {{Maybe|2019}} ||             || [[Bob Smith]]                                || [[wikipedia:C (programming language)|C]], APL                                                              || Portable
|-
|-
| [[GNU APL]]             || {{Yes|Nested}}  || {{Yes}} || {{Maybe|If-else}} || {{Maybe|Limited}} || {{No}}        || {{Yes}} || {{Yes}} || {{Yes}}        || {{Yes}}
| [[VisualAPL]]           || 2009    ||               || {{No|2011}} || [[APL2000]]                                  || [[wikipedia:C_Sharp_(programming_language)|C#]]                                                            || [[.NET]] ([[wikipedia:Common Language Infrastructure|CLI]])
|-
|-
| [[Co-dfns]]             || {{Yes|Nested}}  || {{No}}  || {{No}}            || {{Yes}}           || {{Yes}}        || {{Yes}} || {{No}}  || {{Yes}}        || {{Maybe|Partial}}
| [[APL#]]               || 2010    ||               || {{No|2012}} || [[Dyalog Ltd.]]                              || [[wikipedia:C_Sharp_(programming_language)|C#]]                                                            || [[.NET]] ([[wikipedia:Common Language Infrastructure|CLI]])
|-
|-
| [[April]]               || {{Yes|Nested}}  || {{No}}  || {{No}}            || {{Yes}}           || {{Yes}}        || {{Yes}} || {{Yes}} || {{Yes}}        || {{Yes}}
| [[ngn/apl]]             || 2011    || {{Maybe|2018}} ||             || Nick Nickolov                                || [[wikipedia:Javascript|Javascript]]                                                                        || In-browser, [[wikipedia:Node.js|Node.js]]
|-
|-
| [[Dzaima/APL]]         || {{Yes|Nested}}  || {{No}}  || {{No}}            || {{Yes}}          || {{Yes}}        || {{No}}  || {{Yes}} || {{Yes}}        || {{No}}
| [[GNU APL]]             || 2013    ||               ||             || Jürgen Sauermann                              || [[wikipedia:C++|C++]]                                                                                      || Portable
|-
|-
| [[APL\iv]]             || {{Maybe|Lists}} || {{No}}  || {{No}}           || {{Yes}}          || {{Yes}}        || {{Yes}} || {{No}}  || {{Yes}}        || {{No}}
| [[Aplette]]             || 2014    || {{Maybe|2020}} ||             || Greg F. Johnson                              || [[wikipedia:C (programming language)|C]]                                                                  || Portable
|-
|-
| [[Kap]]                 || {{Yes|Nested}}  || {{Yes}} || {{Yes}}          || {{Yes}}          || {{Yes}}        || {{Yes}} || {{Yes}} || {{Yes}}        || {{Yes}}
| [[Co-dfns]]             || 2014    ||               ||             || [[Aaron Hsu]]                                || [[Dyalog APL]]                                                                                            || [[wikipedia:C (programming language)|C]], [[wikipedia:ArrayFire|ArrayFire]] (GPU) targets
|-
|-
| [[APL64]]              || {{Yes|Nested}} || {{Yes}} || {{Yes}}           || {{No}}            || {{No}}        || {{No}}  || {{No}}  || {{Yes}}        || {{Yes}}
| [[April]]              || 2018    ||                ||              || Andrew Sengul                                || [[wikipedia:Common Lisp|Common Lisp]]                                                                      || Common Lisp runtime
|-
| [[dzaima/APL]]          || 2018    || {{Maybe|2020}} ||              || [[dzaima]]                                    || [[wikipedia:Java (programming language)|Java]], [[wikipedia:Processing (programming language)|Processing]] || JVM, Android
|-
| [[APL\iv]]              || 2018    || {{Maybe|2019}} ||              || [https://github.com/ktye ktye]                || [[wikipedia:Go (programming language)|Go]]                                                                || Portable
|-
| [[Extended Dyalog APL]] || 2018    || {{Maybe|2021}} ||             || [[Adám Brudzewsky]]                          || [[Dyalog APL]]                                                                                            || [[Dyalog APL]]
|-
| [[Kap]]                || 2020    ||                ||              || Elias Mårtenson                              || [[wikipedia:Kotlin (programming language)|Kotlin]]                                                        || Portable
|-
| [[APL64]]              || 2022    ||                ||              || [[APL2000]]                                  || [[wikipedia:C_Sharp_(programming_language)|C#]]                                                            || Portable
|-
| [[Dyalog APL Vision]]  || 2022    ||               ||             || [[Adám Brudzewsky]]                          || [[Dyalog APL]]                                                                                            || [[Dyalog APL]]
|}
|}
== See also ==
* [[Unicode#Comparison of implementations]]
* [[Take#Extension support]]
* [[Replicate#Extension support]]
* [[Mix#Language support]]
* [[Laminate#Extension support]]
* [[Not#Extensions]]
* [[Interval Index#History]]
* [[Leading axis theory#Adoption in APL]]
* [[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]]

Navigation menu