GNU APL: Difference between revisions

From Rosetta Code
Content added Content deleted
(Added info on GNU APL, APL2 vs. Dyalog)
(Clarified Dyalog APL extensions over APL2/GNU APL.)
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:
{{implementation|APL}}
{{implementation|APL}}


[https://www.gnu.org/software/apl/ GNU APL] is a cross platform APL interpreter.
[https://www.gnu.org/software/apl/ GNU APL] is a cross platform APL (APL2) interpreter.


The APL interpreter is an (almost) complete implementation of ISO standard 13751 aka. Programming Language APL, Extended.
GNU APL is an (almost) complete implementation of ISO standard 13751 aka. Programming Language APL, Extended.


The APL interpreter has implemented:
The APL interpreter has implemented:
Line 13: Line 13:


- a shared variable interface
- a shared variable interface

Extensions to the APL2 standard include:

- scripting

- SQL interface

- structured variables and associative arrays

- a GTK3 interface for plotting and even building full UI applications in APL.


In general, it follows IBM's APL2 implementation. For a wonderful introduction to APL2, refer to [https://archive.org/details/apl-2-at-a-glance-brown-pakin-polivka APL2 At A Glance], by Brown, Pakin & Polivka.
In general, it follows IBM's APL2 implementation. For a wonderful introduction to APL2, refer to [https://archive.org/details/apl-2-at-a-glance-brown-pakin-polivka APL2 At A Glance], by Brown, Pakin & Polivka.


Note that [https://rosettacode.org/wiki/Dyalog_APL Dyalog APL] is a proprietary implementation that is actively developed by its namesake company, and as such has diverged from APL2 in some respects. Many online examples use Dyalog operators and syntax extensions; to understand the differences refer to this discussion of APL "evolution" or "migration" levels and how they affect the meaning of certain operators: [https://groups.google.com/g/comp.lang.apl/c/QNPOntjvIHM Mix (up arrow) in GNU APL?]
Those who are studying APL would do well to contrast GNU APL with [https://rosettacode.org/wiki/Dyalog_APL Dyalog APL], a proprietary implementation that is actively developed by its namesake company, which has diverged from APL2 in some respects. Many examples nowadays which are found online use Dyalog operators and syntax extensions; to understand the differences refer to this discussion of APL "evolution" or "migration" levels and how they affect the meaning of certain operators: [https://groups.google.com/g/comp.lang.apl/c/QNPOntjvIHM Mix (up arrow) in GNU APL?]


With some basic knowledge of APL2 and Dyalog, programs can be translated from one to the other with minimal effort.
The most important difference between APL2 and Dyalog APL is that Dyalog adds support for ''tacit'' (more commonly called [https://aplwiki.com/wiki/Tacit_programming 'point free']) syntax, if/then/else branch control rather than just the traditional → branch, and supports multiple statements within dfns (lambda functions). However, with some basic knowledge of APL2 and how Dyalog differs, programs can be translated from one to the other with minimal effort.

Latest revision as of 02:44, 11 December 2021

This page is a stub. It needs more information! You can help Rosetta Code by filling it in!
GNU APL is an implementation of APL. Other implementations of APL.

GNU APL is a cross platform APL (APL2) interpreter.

GNU APL is an (almost) complete implementation of ISO standard 13751 aka. Programming Language APL, Extended.

The APL interpreter has implemented:

- nested arrays and related functions

- complex numbers, and

- a shared variable interface

Extensions to the APL2 standard include:

- scripting

- SQL interface

- structured variables and associative arrays

- a GTK3 interface for plotting and even building full UI applications in APL.

In general, it follows IBM's APL2 implementation. For a wonderful introduction to APL2, refer to APL2 At A Glance, by Brown, Pakin & Polivka.

Those who are studying APL would do well to contrast GNU APL with Dyalog APL, a proprietary implementation that is actively developed by its namesake company, which has diverged from APL2 in some respects. Many examples nowadays which are found online use Dyalog operators and syntax extensions; to understand the differences refer to this discussion of APL "evolution" or "migration" levels and how they affect the meaning of certain operators: Mix (up arrow) in GNU APL?

The most important difference between APL2 and Dyalog APL is that Dyalog adds support for tacit (more commonly called 'point free') syntax, if/then/else branch control rather than just the traditional → branch, and supports multiple statements within dfns (lambda functions). However, with some basic knowledge of APL2 and how Dyalog differs, programs can be translated from one to the other with minimal effort.