An RPN calculator with array operations and quotations.
<> $ 4 5 + <9> $ p 9 <> $ [3 4 5] 6 x <[18 24 30]> $ 0 swap <[18 24 30]> $ (+) / <72> $ . 72 <>
ec <expression>: evaluate <expression> as a sequence of ec commands and print the resulting stack. ec : enter interactive (repl) mode.
ec operates as a RPN desk calculator with quotation and vector math functions. Ordinarily, tokens are evaluated from left to right as they're pushed onto the stack. eg.,
3 4 +
will push 3, then 4, then apply the operation +, which will pop two elements from the stack, add them, and push their sum.
To quote a sequence of tokens, wrap it in parentheses. eg.,
(3 4 +)
will push a single quotation containing just those three tokens, which can be applied by subsequent commands.
To create a vector, enclose a sequence of numbers or other vectors in square brackets. eg.,
will create a 1-dimensional vector and push it on the stack.
Vectors can be added to other vectors or individual numbers. eg.,
[3 4] 2 +
will add 2 to each element of [3 4], resulting in [5 6].
[3 4] [2 1] +
will add matching elements of vectors, resulting in [5 5].
Vectors can be of arbitrary dimension, but must contain homogeneous data. eg.,
[[2 1] [0 0]]
is a valid vector (of shape [2 2]), but
[ [0 0]]
For a full dictionary listing, enter the special command:
To get a description of any word, quote it and use the special command. eg.,
Will print a description of the
On Arch Linux, install
ec via AUR:
yay -S ec
On other systems, install the Janet language, clone this
repository and build using
$ mkdir janet_modules $ JANET_PATH=janet_modules/ jpm load-lockfile $ JANET_PATH=janet_modules/ jpm build $ cp build/ec <somewhere on your path>
EC is built using the Janet language and needs Janet to
be compiled. You will use the Janet package manager,
jpm, to install
Install the Janet language. You can download the release here: https://github.com/janet-lang/janet/releases
It's available on Homebrew: https://formulae.brew.sh/formula/janet
And on AUR: https://aur.archlinux.org/packages/janet-lang/
You can read the Janet docsfor more information.
Once you install Janet, you'll have access to the
The EC source is available at https://git.sr.ht/~subsetpark/ec.
You can use
jpm to install it, or get it from AUR.
On Linux systems that use the AUR (Arch User Repository), you can install
yay -S ec
You can also use the
jpm package manager. EC requires
which uses the
libedit library and
pkg-config program. Make sure
both of those are installed on your system.
Run the following command:
sudo jpm install https://git.sr.ht/~subsetpark/ec
This will download and the EC library with all its dependencies,
then compile the
ec application and install it. (on my machine, it
installs it to
Clone EC to a working directory and then build it. By default,
jpm will install things globally, but you can easily specify a local
directory. Here's an example:
code-src/ec [master !] ⊕ JANET_PATH=janet_modules jpm load-lockfile <all the deps get downloaded and compiled...> code-src/ec [master !] ⊕ JANET_PATH=janet_modules/ jpm build generating executable c source... found native janet_modules/_jmod_posix_spawn.so... found native janet_modules/_sh.so... found native janet_modules/json.so... found native janet_modules/moondown.so... compiling build/ec.c to build/build___ec.o... linking build/ec...
ec executable is now in the
./build directory. You move it
wherever you like (I move mine to