GNU APL: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 9: Line 9:
| latest release version  = 1.8 / 2019
| latest release version  = 1.8 / 2019
| implementation language  = [[wikipedia:C++|C++]]
| implementation language  = [[wikipedia:C++|C++]]
| source                  = [http://svn.savannah.gnu.org/viewvc/apl/trunk/ GNU Savannah]
| platforms                = x86, x86_64
| platforms                = x86, x86_64
| operating systems        = Linux, Windows (via Cygwin)
| operating systems        = Linux, Windows (via Cygwin)

Revision as of 01:47, 27 December 2019

GNU APL is a free and (almost) complete implementation of Extended APL as specified in ISO/IEC 13751:2001 and is thus similar to APL2. It runs on GNU/Linux and on Windows using Cygwin, and uses Unicode internally. GNU APL was written and is being maintained by GNU APL community, implementing:

  • nested arrays and related functions
  • complex numbers, and
  • a shared variable interface

Besides for running in the classic interactive mode locally, there is an (experimental) online version of GNU APL. In addition, GNU APL can be scripted.

Richard Stallman

Richard Stallman, founder of the GNU Project, was an early adopter of APL, using it to write a text editor as a high school student in the summer of 1969. The same year, he also wrote a now famous rhyme:

Rho, rho, rho of X
Always equals 1
Rho is dimension, rho rho rank.
APL is fun!

This plays on the fact that ⍴X gives the shape (length of each axis; "dimension") of X while ⍴⍴X gives the rank (number of axes/dimensions) and since the number of axes is always a count, it is a single number, which has the shape 1 if a vector, and always returns a vector:

      ⎕←X←3 1 4∘.+2 7 1 8
5 10 4 11
3  8 2  9
6 11 5 12
      ⍴X
3 4
      ⍴⍴X
2
      ⍴⍴⍴X
1

Encoding

It should be noted that GNU APL tends to prefer the Unicode Lozenge (U+25CA; ) and Element of (U+2208; ) over Diamond operator (U+22C4; ) and Small Element of (U+220A; ) which are more commonly used by dialects. This can lead to SYNTAX ERRORs if attempting to use code written for GNU APL in other implementations. However, GNU APL also accepts the more common code points.

External links


APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000PometoTinyAPL
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages