~subsetpark/ec

ref: allow-alternate-parens ec/README.md -rw-r--r-- 2.0 KiB
713e51f8 — Zach Smith Include curly braces as quotes 7 months ago

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
<> 

#Usage

   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.,

   [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.,

   (i) ?

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 <somewhere on your path>