Charlie Harvey

Demonstrating the APL programming language (1975)

The other day on hackernews, this video was posted of Imperial college’s Bob Spence demonstrating the APL computer language. Some of what is being shown is all too familiar, though the analogue nature of the computer interaction is decidedly steampunk.

Despite the steampunkiness of interaction, what we are looking at here is very much a modern Read Evaluate Print Loop (or REPL). The REPL idea was not new even in 1975, having originated in John Macarthy’s work on LISP in the 60s, discussed by Paul Graham in his roots of LISP article. You type expressions, the computer evaluates and prints the result. This is the trick that all modern shells use. And of course a decent REPL is the cornerstone of many modern langauges — I particularly like the Haskell REPL. You can even run REPLs for various languages in your browser.

APL was clearly a powerful language, though its popularity has been on the wane since the eighties. Perhaps that’s because of the need for the programmer to use a special APL keyboard like the one below (image from rursus/wikipedia used under CC licence) to type non-ASCII characters into her terminal. Also likely to have hindered adoption is the fact that APL didn’t have much of a migration path from mainframe to PC until quite late on.

apl keyboard

There are some nice features in APL, not least its native support for vectors and matrices, and doing maths on those objects directly. This has clearly been an influence on languages targetted at statistical uses ike R, though mainstream languages have never really implemented anything similar. Paul Abraham’s paper An APL machine describes how you can implement lazy evaluation (that is delaying computations until they are stricty required) in APL. Which is pretty cool too.

If you would like to follow along with Bob’s moves, you can head over to the browser based APL REPL.


  • Be respectful. You may want to read the comment guidelines before posting.
  • You can use Markdown syntax to format your comments. You can only use level 5 and 6 headings.
  • You can add class="your language" to code blocks to help highlight.js highlight them correctly.

Privacy note: This form will forward your IP address, user agent and referrer to the Akismet, StopForumSpam and Botscout spam filtering services. I don’t log these details. Those services will. I do log everything you type into the form. Full privacy statement.