Roger Hui publishes Dijkstra’s 1982 letter criticizing APL’s dependency on terminals, then rebuts it with formal derivations showing APL works as a mathematical notation.
Key Takeaways
Dijkstra argued APL devotees couldn’t teach or discuss the language without a physical APL terminal, unlike pen-and-paper languages.
He framed the tool-shapes-user argument: APL’s influence on its practitioners repelled outsiders more than any interface friction.
Hui counters that Iverson invented APL notation as a communication medium years before any computer implementation existed.
Hui demonstrates APL’s formal utility with two derivations: Ackermann’s function proof by induction and an inverted-table index-of algorithm in Dyalog APL.
The inverted-table derivation replaces expensive vert operations with column-wise integer encoding (x⍳¨y), a concrete efficiency gain from formal manipulation.
Hacker News Comment Review
Commenters split on whether Dijkstra’s objection was ever valid: Unicode availability removes the terminal-dependency argument, but his deeper dislike was APL’s high abstraction level, not the character set.
Several commenters noted APL pioneered bulk-array operators that prefigured functional programming, but its unconventional syntax caused adoption to collapse against lower-friction alternatives like Perl and later Python.
There is mild consensus that executability is an asset even in formal-methods courses, echoing Hui’s point, though some see APL’s write-only density as a practical ceiling.
Notable Comments
@garyrob: wrote production APL in 1978-79 and calls it “write-only” even without deliberate obfuscation, a practitioner limit Hui’s paper does not address.
@gatestone: points to Russ Cox using Rob Pike’s APL-like Ivy for Advent of Code 2021 as evidence array-language thinking persists inside Go/Bell Labs lineage.