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> $ p
72
<>
```
# Usage
ec : evaluate 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.,
[3 4]
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
[[2] [0 0]]
is not.
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 `apply` adverb.
# Installation
On Arch Linux, install `ec` via AUR:
`yay -S ec`
On other systems, install the [Janet][] language, clone this
repository and build using `jpm`:
```
$ mkdir janet_modules
$ JANET_PATH=janet_modules/ jpm load-lockfile
$ JANET_PATH=janet_modules/ jpm build
$ cp build/ec
```
[Janet]: https://janet-lang.org