initial commit
+107
@@ -0,0 +1,107 @@
|
|||||||
|
# Built-in functions
|
||||||
|
|
||||||
|
## Regular functions
|
||||||
|
|
||||||
|
| Symbol | Argument Count | Argument Types | Description | Accepted Keywords |
|
||||||
|
|-------------------|----------------|----------------|------------------------------------------------|-------------------|
|
||||||
|
| [`+`](#+) | any | `:number` | Adds up the arguments | |
|
||||||
|
| [`-`](#-) | any | `:number` | Subtracts the arguments from the first one | |
|
||||||
|
| [`*`](#*) | any | `:number` | Multiplies the arguments together | |
|
||||||
|
| [`/`](#/) | any | `:number` | Divides the arguments | |
|
||||||
|
| [`=`](#=) | any | overloaded | Checks if all the arguments are equivalent | |
|
||||||
|
| [`pair`](#pair) | 2 | any | Returns a pair of the two arguments | |
|
||||||
|
| [`first`](#first) | 1 | `:pair` | Returns the first element of the pair | |
|
||||||
|
| [`rest`](#rest) | 1 | `:pair` | Returns the rest of the pair | |
|
||||||
|
| [`eval`](#eval) | 1 | any | Evaluates the argument | |
|
||||||
|
| [`prog`](#prog) | any | any | Combines multiple expressions to one | |
|
||||||
|
| [`list`](#list) | any | any | Returns a list of the arguments | |
|
||||||
|
| [`print`](#print) | 1 | any | Prints the arguments | `:end` `:sep` |
|
||||||
|
| [`read`](#read) | 0 or 1 | any | Reads a string from stdin | |
|
||||||
|
| [`type`](#type) | 1 | any | Returns the type of the argument | |
|
||||||
|
| [`exit`](#exit) | 0 or 1 | `:number` | Exits the interpreter with the given exit code | |
|
||||||
|
|
||||||
|
## Special forms
|
||||||
|
|
||||||
|
| Symbol | Argument Count | Argument Types | Description |
|
||||||
|
|---------------------|----------------|----------------|-------------------------------------------------------------------------------------------------|
|
||||||
|
| [`and`](#and) | any | any | Logic and (with short circuiting) |
|
||||||
|
| [`or`](#or) | any | any | Logic or (with short circuiting) |
|
||||||
|
| [`not`](#not) | 1 | any | Logic not |
|
||||||
|
| [`if`](#if) | 2 or 3 | any | First arguments is the condition, second the "then" part, the optional thirt is the "else" part |
|
||||||
|
| [`quote`](#quote) | 1 | any | Returns the argument without evaluating it (as the syntax tree) |
|
||||||
|
| [`define`](#define) | 2 | `:symbol`, any | Defines a Symol in the the current environment |
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
### `+`
|
||||||
|
Accepts any number of arguments of type `:number` and returns the sum
|
||||||
|
of them.
|
||||||
|
|
||||||
|
```lisp
|
||||||
|
(+ 1 2 3) ;; 1 + 2 + 3
|
||||||
|
> 6.00000
|
||||||
|
```
|
||||||
|
|
||||||
|
### `-`
|
||||||
|
Accepts any number of arguments of type `:number` and returns the
|
||||||
|
difference of the first number to the sum of the other arguments.
|
||||||
|
|
||||||
|
```lisp
|
||||||
|
(- 10) ;; watch out !
|
||||||
|
> 10.00000
|
||||||
|
|
||||||
|
(- 10 2 3 1) ;; 10 - 2 - 3 - 1 => 10 - (2 + 3 + 1)
|
||||||
|
> 4.00000
|
||||||
|
```
|
||||||
|
|
||||||
|
### `*`
|
||||||
|
Accepts any number of arguments of type `:number` and returns the
|
||||||
|
product of them.
|
||||||
|
|
||||||
|
```lisp
|
||||||
|
(* 3 4 2) ;; 3 * 4 * 2
|
||||||
|
> 6.00000
|
||||||
|
```
|
||||||
|
|
||||||
|
### `/`
|
||||||
|
Accepts any number of arguments of type `:number` and returns the
|
||||||
|
quotient of them.
|
||||||
|
|
||||||
|
```lisp
|
||||||
|
(/ 100)
|
||||||
|
> 100.00000
|
||||||
|
|
||||||
|
(/ 100 5 2) ;; ((100 / 5) / 2)
|
||||||
|
> 10.00000
|
||||||
|
```
|
||||||
|
|
||||||
|
### `=`
|
||||||
|
Accepts any number of arguments of any type and compares them,
|
||||||
|
returning 1.00000 if they are all equivalent (might still be different
|
||||||
|
objects) or `nil` if they are not all the same. The finction is
|
||||||
|
overloaded for all the built-in [types](types.md)
|
||||||
|
|
||||||
|
```lisp
|
||||||
|
(= 100)
|
||||||
|
> 100.00000
|
||||||
|
|
||||||
|
(/ 100 5 2) ;; ((100 / 5) / 2)
|
||||||
|
> 10.00000
|
||||||
|
```
|
||||||
|
|
||||||
|
### `pair`
|
||||||
|
### `first`
|
||||||
|
### `rest`
|
||||||
|
### `eval`
|
||||||
|
### `prog`
|
||||||
|
### `list`
|
||||||
|
### `print`
|
||||||
|
### `read`
|
||||||
|
### `type`
|
||||||
|
### `exit`
|
||||||
|
### `and`
|
||||||
|
### `or`
|
||||||
|
### `not`
|
||||||
|
### `if`
|
||||||
|
### `quote`
|
||||||
|
### `define`
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
# Built-in types
|
||||||
|
|
||||||
|
> asd
|
||||||
|
> dsa
|
||||||
Reference in New Issue
Block a user