summaryrefslogtreecommitdiff
path: root/sites/apl.pmikkelsen.com/index.md
blob: da0a9fc678b2169c03941fa51e265bc3cead21bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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][1]. 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][1]
* Some of the primitive operators from [Dyalog APL][1]
* Box printing (by default)

For more information, see [Implementation Status](/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).

I haven't yet figured out a good way to type the APL glyphs on 9front, so you have to come up with something on your own. And remember to use a font that can display the glyphs!

# Screenshot

[![A picture of APL9 in action][2]][2]

[2]: /_images/screenshot.png
[1]: https://dyalog.com