Maintaining readability of APL can take a special effort. It is easy to write very dense code, and the mathematical look of APL can encourage usage of single-letter names. Traditionally, APLers use the term pornography to describe code that is hard to read, or uses unusual constructs. Code golf often results in pornographic code.
Gilman & Rose
In APL – an Interactive Approach, the authors the authors describe the following code, which computes the correlation coefficient, as “almost pornographic”:
The APL2 Idiom list includes the following entry:
⍝ Pornography. Combining two lines into one.
This was a common technique before Left was added to the language:
X←'line1' ⊣ Y←'line2'
The Diamond statement separator (
⋄) provides an alternative means of inlining multiple statements:
Y←'line2' ⋄ X←'line1'
Note that in all these cases,
Y is assigned first.
Morten Kromberg asked one of his colleagues to “Please avoid this kind of pornography:”
ns←ns container.(⍎⎕NS) ⍬
Finally, splitting the 2-train apart makes it even clearer:
ns←⍎ns container.⎕NS ⍬
A new namespace, with the original value of
ns as name, is created inside
container and the character representation
'#.container.ns' is returned from
⍎ which evaluates the name to a reference, that in turn replaces the previous value of