This is an archive of ngn/apl but PRs to this repo are still accepted. Feel free to contribute!
Its author thinks it has served its purpose and has become a distraction. He went on to create a free implementation of K6 and encouraged people to use that instead, until he stopped supporting that too.
Online Demo - can also be installed offline as a PWA (Progressive Web App) on a computer / phone - even without internet!
An APL interpreter written in JavaScript. Runs in a browser or NodeJS.
Supports: most primitives, dfns ({⍺ ⍵}
), nested arrays, complex numbers (1j2
), infinities (¯
or ∞
), forks and
atops, strand assignment ((a b)←c
), indexed assignment (a[b]←c
), user-defined operators ({⍺⍺ ⍵⍵}
).
Doesn't support: tradfns (∇R←X f Y
), non-zero index origin (⎕IO
), comparison tolerance (⎕CT
),
prototypes, modified assignment (x+←1
), control structures (:If
), object-oriented features, namespaces.
Used in Paul L Jackson's web site, repl.it, and tio.run.
Run apl.js
with Node to start a REPL:
node apl.js
An APL script can be given as argument:
node apl.js filename.apl
apl.js
can be require()
d as a CommonJS module from JavaScript:
var apl=require('./apl')
var r=apl('1 2 3+4 5 6')
or used in an HTML page:
<script src='apl.js'></script>
<script>var r=apl('1 2 3+4 5 6')</script>
- Vim keymap and syntax
- baruchel/vim-notebook: evaluate blocks of APL code in a vim buffer