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