Introduction
This is the website for APL9, which is an APL implementation written in C on and for Plan 9 (9front specifically, but the other versions should work as well).
Work started in January 2022, when I wanted to do some APL programming on 9front, but no implementation existed. The focus has been on adding features and behaving (on most points) like Dyalog APL. Speed is poor, since many primitives are implemented in terms of each other, which is not optimal, but it helped me implement stuff easier.
Note: development is still very much on-going. Some primitives may be implemented wrong at this point, since it can be hard to implement them without ever having used them ☺.
Features
- Dfns work, but the error guards are not implemented yet
- Function trains
- Most primitive functions from Dyalog APL
- Some of the primitive operators from Dyalog APL
- Box printing (by default)
For more information, see Implementation Status.
Notable differences from Dyalog APL
- No bracket axis
- No bracket indexing
- No tradfn syntax
- No complex numbers (might change later)
-
⍺⍺
is changed to⍶
-
⍵⍵
is changed to⍹
-
Outer product
∘.
is changed to⌾
-
Dop self reference
∇∇
is changed to∆
and⍙
for monadic and dyadic operators respectively
Installation
Installation is as simple as cloning and running mk
.
git/clone https://git.sr.ht/~pmikkelsen/APL9
cd APL9
mk
% set the BIN environment variable if
% you don't want it to install globally
mk install
The resulting binary is installed as apl
. At the time of writing, it doesn't take command line arguments (apart from -t and -m for debugging).
Remember to use a font that can display the glyphs! To be able to write the apl glyphs, a small script is provided with the name aplkeys
which works on 9front. Usage is as follows:
% Say my normal kbmap is called dk, but I want to be able to write APL symbols
aplkeys dk
The layout is mostly as the one on X11 on linux, but the way to access the symbols are different. In order to get the "normal" layer, such as ⍺⍳⍵∊*
and so on, hold down Mod4 (the windows key) while typing (in this case, typing aiwep). To access the other layer, hold down Mod4 and Alt-gr at the same time, to get ⍶⍸⍹⍷⍣
and so on. Please email me if you have questions about this.