Free APL


To get a copy for personal use, just download PLJsAPL.zip, open the .ZIP file and follow the instructions in the ReadMe file it contains.  Together, these programs provide all of the functions originally available in APL, and some of APL2’s capabilities.  APL has mostly been available as an interpreted language. This is a purely compiled version.  Even your statements in immediate execution are compiled before they are evaluated.

ShellAPL helps you write APL expressions, create and use methods.  To see it in action:

Start ShellAPL, then

Click on the icon on the left of the button bar.

Then click on the script

                   APL and its Keyboard

 

PLJsAPL  has the functions which provide APL functionality to a .Net program.

 

System Functions describes several useful system functions and values which ShellAPL provides.

 

System Commands begin with right parenthesis, any such statement is a system command.  There is a special case of just the right parenthesis which recalls the last statement you entered.

 

Key Pages describes the layout and behavior of the APL keyboard.

 

What you need

PLJsAPL is written entirely in .Net.  Most Windows PCs will run it as is.  In order to compile methods, you will also need Visual Studio.  If you don’t already have Visual Studio, the express editions are free.  This version compiles programs into Visual Basic.  I’ve confirmed that the code will work with C# (pronounced C Sharp), but someone else will need to get the source and produce another compiler for that to be of much use to APL programmers.

http://www.microsoft.com/express/downloads/

 

To see the APL characters in what I’ve written, I have permission to include a copy of Phil Chastney’s font.  His work is also available at:

          http://www.chastney.com/~philip/

 

Limitations

1)   Variables are local or global within a workspace.  This means that called functions can see only their own locals and the workspace globals which their locals do not hide, but not the locals of their callers.

2) Only one assignment can be made in a statement.

3) One cannot have an array of labels for GoTo.  Please note; you can however move the next line to execute during debugging.

Advantages

In addition to the limitations, there are several advantages to this new approach.

1)           Each running workspace is an instance of a class.  Thus programs can be controlling multiple copies of one workspace, each with their own version of global values.

2)           An APL programmer isn’t limited to developing everything themselves.  All of the host object model is directly available for sending and receiving data.

3)           APL programmers are not second class citizens when it comes to extending APL.  I’ve exposed all of the tools I use, to assist others in writing new primitive functions or operators.