Welcome!
This wiki page describes the current state of the language interpreted by this program. Some things on this page are still subject to change, beware.
Note: in the implementation, I differentiate between built-in functions, built-in operators, and the standard library.
This is, as it stands currently, mostly meaningless from the perspective of user code, and is purely an implementation detail.
In practice you may treat the language as if all of the following are true:
- Your code is executed in a freshly constructed "default" global environment containing all of the definitions on this page.
- You may redefine, set, or otherwise modify your global environment as you see fit. The language currently
has no protection or namespace mechanism.
Math
Generally, numbers can be treated as uniform.
Numbers written as integers (e.g. 1, -3) are assumed to be integers, and they will be held in an integer value.
Numbers written as floating point numbers (e.g. 1.0, -2.3) are assumed to be doubles, and they will be held in a double value.
Arithmetic between integers (except for division) always produces an integer value.
Arithmetic involving a double always produces a double.
Division always produces a double.
There is currently no way to differentiate between doubles and integers. This functionality may be added later,
possibly when a more thought-out type system is added to the language.
Functions and macros that operate on lists.
Operators and functions that add, remove or modify definitions. Other utilities for modifying environments may be included.