APL workspace

An APL workspace is a collection of APL programming language objects such as functions (programs) and variables (scalars, vectors, and matrices). The workspace is the basic thing that is loaded, saved, and transferred in order for APL programs to be used or developed, serving as an encapsulated app and dataset for end-users and a project file for developers.

Traditionally, APL in its mathematical purity is kept apart from such barbarisms as computer filesystems, instead doing all of its data access through APL functions operating on variables. The earliest versions of APL had no ability to read or write data files, and the pragmatic necessity of system commands such as ")LOAD" and ")SAVE" for loading and saving workspaces (to/from a computer filesystem whose details were hidden from the user) were at best a necessary evil, such status being signalled by the use of a syntax whose ugly mismatched parenthesis telegraphs the fact that the command was not part of the pure elegance of true APL.

Later versions of APL added some file capabilities, along with inter-process communication, through the mechanism of "shared variables".

File formats
Unfortunately, there is no single standard for the files by which APL workspaces are stored. The user, shielded from the low-level system details by the high-level APL constructs, is kept blissfully ignorant of how the workspaces are stored and retrieved (on old mainframe APL implementations, perhaps it was to/from a reel of magnetic tape!) until such time as it becomes necessary or desirable to port them over to a different platform, at which time it becomes an issue that the manner of storage was highly specific to the platform and APL implementation on which the workspace originated.

Various transfer formats and utilities have been developed to solve this problem, encoding the APL objects in a number of different ways. The odd APL code page full of special characters poses a difficulty for text-file-based transfer formats; although Unicode does include those characters, many systems lack fonts supporting them. An "APL-ASCII" format was devised which encodes the characters in human-understandable form with sequences using curly braces and abbreviations like "del" for the Del character.

References and Resources

 * APL Workspace Transfer (Dyalog)
 * APL-ASCII Workspace Transfer