A collection of articles concerning APL and related languages. (All articles will open in a new window.) To suggest an article for posting, contact us.
A Dictionary of APL
by Kenneth Iverson
APL is a formal, imperative language. Because it is imperative, a sentence may be called an instructions...Read more...
Notation as a Tool of Thought
by Kenneth Iverson
The 1979 Turing Award lecture...The importance of nomenclature, notation, and language as tools of thought has long been recognized.Read more...
A Programming Language
by Dr. Kenneth Iverson
Applied mathematics is largely concerned with the design and analysis of explicit procedures for calculating the exact or approximate values of various functions. Such explicit procedures are called algorithms or programs. Because an effective notation...Read more...
APL Since 1978
by Roger Hui and Morten Kromberg
A history of APL since 1978 which follows various threads through the last 40 years to identify the most important factors that have shaped the evolution of APL.Read more...
The Derivative Revisited
by Mike Powell
In 1979, Ken Iverson wrote a paper on the derivative as part of the ACM APL Conference [0]. In 8 pages he covered a lot of ground. His discussion of the derivative goes way beyond dy/dx. It deals with derivatives of the most general type. This article revisits much of that paper and attempts to bring the notation up to date. It also provides an APL model of the derivative operator.Read more...
Language as an intellectual tool: From hieroglyphics to APL
by Donald McIntyre
Language and reason are intimately related, and the embodiment of an idea in a symbol may be essential to its comprehension. APL unifies algebra...Read more...
Bring something beautiful
by Roger Hui
A representation in J notation of Euler's product formula for the Riemann Zeta function.Read more...
Ken Iverson Quotations and Anecdotes
by Roger Hui
Ken's ancestors came from Trondheim, Norway. He observed on the serious outlook of Norwegians by retelling a story he had heard on Garrison Keillor's radio show about Lake Woebegone...Read more...
A Personal History of APL
by Michael Montalbano
I have several reasons for calling this talk a personal history.
For one, I want to make it clear that the opinions I express are my own: they are not the opinions of my employer or of any other organization, group or person. If you agree with them, I am happy to have your concurrence: if you disagree, I'd be happy to defend them. In any event, the praise, blame or indifference my views may inspire in you should be directed to me and to no one else.
What I plan to discuss are things I have done, seen or experienced at first hand....
Read more...
APL Blossom Time (live)
by JCL Guest
Click for an audio file of the live performance of "APL Blossom Time," a song by JCL Guest. This song, set to the tune of "The Battle of New Orleans", recounts the early history of the invention and implementation of APL - "A Programming Language". As mentioned in the introduction, the history covered by the song covers the period from approximately 1962 to 1967. This version was sung by the participants of the APL conference held in San Francisco, California, in 1973.Listen...
APL Blossom Time (studio)
by JCL Guest, performed by Jim Brown
Click for an audio file of the studio version of "APL Blossom Time," a song by JCL Guest, performed here by noted APL2 implementor, Jim Brown, who also plays guitar on the live version.Listen...
Style and Literacy in APL
by Michael Berry and Roland Pesch
Mathematicians and engineers love APL for its conciseness and power, but there’s quite a price to pay: APL programs are almost unreadable. It’s very easy to write a single-line program that would take an average APL programmer a good fifteen minutes to figure out. Typically, good APL programmers write one line of comment for every line of code and try to keep their program lines short.But is this wise? In what way is a multiplicity of short statements easier to read than a single, longer one? For whom is this style in general easier to read?
Read more...
Automatic Data Processing
by Dr. Kenneth Iverson
The systematic analysis and design of complex algorithms must be based upon a suitable means for their description. Since a precise description of an algorithm is called a "program," a notational scheme for the description of information processes is called a "programming language." A programming language should be concise, precise, consistent over a wide area of application, mnemonic, and economical of symbols....Read more...
Memory Mapped Files in J
by Chris Burke
J 4.02 supports memory-mapped files. A memory-mapped file can be associated with a J noun - referencing the noun is equivalent to reading the file; changing the noun's value changes the file. Some benefits: there is no need for explicit file i/o operations; memory-mapped files can be much larger than system RAM, yet they can be accessed without page thrashing; accessing memory-mapped files is very efficient....Read more...
Implementation of Black-Scholes in J
by Eugene McDonnell
This article is about a J version of the Black-Scholes formulas, the brainchild of Myron Scholes and the late Fischer Black. A "call" is an option to buy a stipulated amount of stock at a specified time and price, and a "put" is an option to sell ditto. A person might acquire a call option who expects the price of the asset to rise. The Black-Scholes formulas enable the seller of the option to determine quite accurately what price to charge for such options.Read more...
From Hieroglyphics to APL - The Relentless Course of History
by Homer Hartung
There are many historical parallels between older developments of number systems and modern developments of computer languages. These indicate that APL should ultimately develop a dominant position....Read more...
A Conversation with Arthur Whitney
When it comes to programming languages, Arthur Whitney is a man of few words. The languages he has designed, such as A, K, and Q, are known for their terse, often cryptic syntax and tendency to use single ASCII characters instead of reserved words. While these languages may mystify those used to wordier languages such as Java, their speed and efficiency has made them popular with engineers on Wall Street.Read more...
Rationalized APL
by Dr. Kenneth Iverson
Certain aspects of conventional APL (as defined in the IBM publication APL Language) violate some of the fundamental characteristics of the language, and the definitions of some other aspects are too limited to provide clear guidance for systematic extensions. The present paper proposes convenient replacements for the anomalous facilities, and a systematic scheme for extensions, a scheme that does not invalidate the facilities defined in....Read more...
Rex Swain's APL Information
by Rex Swain
A collection of APL resources, including organizations, publications, vendors, and more, from long-time APLer Rex Swain. Also shows an image of one of the original APL keyboards.Read more...
Conway's Game of Life in one line of APL
by Michael Gertelman
Before we start to decipher (this seems to be the correct word here) the Life program, let's try to work out the strategy of how to write this program in one line, no matter how impossible it sounds. Life is a cyclic game by its very nature....Read more...
Solving Sudoku in J
by Roger Hui
Welcome to Sudoku. Sudoku is a popular puzzle in Japan, to where it was imported from the U.S. It was popularized in the West by Wayne Gould, a New Zealander living in Hong Kong. In a November 2004 article in the Times, Gould was quoted as saying that some Sudoku puzzles are so difficult that you can't solve them if your life depended on it. The following Sudoku solver uses a simple but effective strategy. Even puzzles rated as "very hard" require no more than 15 milliseconds and 30 Kbytes on a 500 MHz Pentium 3 computer.Read more...
Solving Sudoku in Dyalog APL using dynamic functions
The algorithm is simple: handle the matrix as a vector. The rows, columns and sudoku areas are denoted by index vectors. Do the basic checking for the puzzle (i.e. polish) and with the main function. Check one alternative from the list at time: filter all the possible elements for all the cells; if at least one cell is empty = no solution -> take the next from the list; if one cell contains more than one number -> select the cell from the tightest group and add every combination (from this cell) to the list; if all cells contain one number = solution -> take the next from the list.Read more...
Sudoku in K
by Arthur Whitney
A concise description of how to solve Sudoku puzzles in K.// arthur whitney x:(0 6 0 1 0 4 0 5 0 0 0 8 3 0 5 6 0 0 2 0 0 0 0 0 0 0 1 8 0 0 4 0 7 0 0 6 0 0 6 0 0 0 3 0 0 7 0 0 9 0 1 0 0 4 5 0 0 0 0 0 0 0 2 0 0 7 2 0 6 9 0 0 0 4 0 5 0 8 0 7 0) / all g:{$[0>m:|/i:b x;,........
Read more...
Sudoku mit APL
Progresses from 4x4 to 9x9 Sudoku....by Urs Oswald
(PDF)(German)Read more...
Don't Quote Me: The Single and Double Quotes Problem
by Bob Smith
As Gary Bergquist mentioned in the Limbering Up! column of the 2001 Q2 issue of his newsletter, now that some APL implementations allow both single and double quotes to mark a string, the natural question to ask by anyone who wants to parse such a line is which quote marks delimit the strings and which ones are inside a string. While I am unable to find a simple solution, there is one which involves a very powerful (albeit less than practical) tool called Transitive Closure.Read more...
A Positive Outlook on APL
on the APL Wiki
A lot of the content of sites like comp.lang.apl is very depressing, and must surely generate a poor impression of APL is stumbled upon by the curious or new-to-APL. I personally think that the future for APL can be very positive, but we need to generate a positive attitude in the things we say and write. Here are a few random seeds - please feel free to amend and append as you wish.Read more...
APL: a Glimpse of Heaven
by Bernard LeGrand
But to describe the APL language, whether in 3 or 30 pages is as difficult as describing a tennis match or the flight of a seagull: a written document is not capable of matching hands-on experience. Thus the following pages only give a very limited and fragmentary view of the whole wealth of APL. The abundance of APL riches is a glimpse of heaven.Read more...
Pascal's Triangle in APL
on the Rosetta Code Wiki
How to generate Pascal's triangle of order ⍵ [omega] using APL.Read more...
Pascal's Triangle in APL
on the APL Wiki
Write an APL function that takes an argument and returns a triangle like the one shown above. The argument defines the number of layers. The shown example has 6 layers. It is not a problem to produce the numbers - it is a formatting task. Of course this can be done in a single line of APL.Read more...
Pascal's Triangle in J
on the J Wiki
Pascal's triangle is traditionally a triangular arrangement of the binomial coefficients.1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1In J it is more convenient to treat it as a table and it is seen that Pascal's triangle is simply a table of the ! verb....
Read more...
Pascal's Triangle in J
on the Rosetta Code Wiki
J!~/~ i.5 1 0 0 0 0 1 1 0 0 0 1 2 1 0 0 1 3 3 1 0 1 4 6 4 1...