The Big Page of APL Stuff

🖜Back

This page is all about APL (A Programming Language).

______ _ __ __ __ ___ ____ __

/ ____// | / // / / / / | / __ \ / /

/ / __ / |/ // / / / / /| | / /_/ // /

/ /_/ // /| // /_/ / / ___ | / ____// /___

\____//_/ |_/ \____/ /_/ |_|/_/ /_____/

** This page best viewed in Gemini with fixed-with fonts **

In addition to some APL examples, this page has all of the APL-related

books I've gathered across the net. The most notable *and* useful for

the APL newcomer is:

APL2 At A Glance, by Brown, Pakin, Polivka

(German version)

^^^^

... this is *the best* intro, bar none, for APL newcomers. The print

edition is extremely scarce nowadays so it's now in the Internet Archive

(English version scanned by yours truly). Local copy linked above, for your

perusal and edification.

All of the examples work well in GNU APL and most will probably work

in Dyalog (a commercial implementation that has some nonstandard extensions)

by running ⎕ML ← 2 first.

I would recommend GNU APL since it's Open Source and you can hack on

it yourself.

You should give it a try!

Many, many more books and articles on APL can be found here in my

archive:

Visit the APL book archive. PDF format.

What is APL?

APL stands for "A Programming Language" and is the brainchild of

Kenneth E. Iverson. He was honored with the Turing Award in 1979

"for his pioneering effort in programming languages" and the

mathematical notation that became the core of APL.

It is an array-oriented programming language, using notation

heavily influenced by mathematics but you don't need to be a math

whiz to use or appreciate it!

APL's extended symbol set can be intimidating at first, both for

its unfamiliarity and the minor setup one must do on one's machine

in order to enable entry via a standard keyboard. Don't worry, it

is not too hard to set up.

APL enables the expression of complex algorithms in very concise

and intuitive notation (once you learn the symbols for the primitves,

that is!)

For example, the multiplication table, from 1 to 5:

---

      (⍳5)∘.×⍳5
┌→────────────┐
↓1  2  3  4  5│
│2  4  6  8 10│
│3  6  9 12 15│
│4  8 12 16 20│
│5 10 15 20 25│
└─────────────┘

Find all primes from 1 to N

---

      ⍝[ref: Enthusiasticon 2019 - An Introduction to APL | https://youtu.be/UltnvW83_CQ]
      primesTo ← {{⍵{(~⍺∊⍵)/⍺}{⍵∘.×⍵}⍵}1↓⍳⍵}
      primesTo 100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

More Examples

Determine if a word is an anagram of any other list of words

Code

Compute if N is an Armstrong (Narcissistic) number

Code

Output the road-trip favourite, "99 Bottles of Beer"

Code

Hunt the Wumpus written in APL!

TODO: Create a Gemini mirror of the GNU APL home page with an APL

intro and installation/setup instructions.

Using the GNU APL NABLA line editor

Command table for GNU APL's function editor

Other APL pages in the Gemini-verse

APL function lists, links to tools, Fonts and more

Cellular Automata and APL (by Alchemist)