Structure of a program
The language is made of a tree of function calls. Each character (with some exceptions) represents a function that may take as many or few arguments as it likes. Arguments are then read from directly after it in the code.
If instruction A takes 1 argument, B takes 2, C takes 3, and D and E both take none, then the @ code
Would be written in many languages like
B(A(D()), C(D(), B(E(), D()), E())))
Instruction arguments are evaluated LTR unless the docs explicitly say otherwise. Arguments may not be evaluated at all or may be evaluated more than once.
Values and data types
@ has the following data types:
number - This is an arbitrary precision rational number.
vector - This is an immutable list of other values of any type.
If anything refers to a string, then it means a vector of codepoints.
Anything enclosed in braces is seen as a string literal. String literals are automatically ended on EOF. Should an EOF be encountered where an instruction should be, Š is used.
@ can invoke the system shell, and therefore is Turing-complete if the shell is. Without this, I do not believe that it is Turing-complete yet as I have not yet implemented variables. They should be in the next release, however.