# Operations

This document describes the operations supported by ACMEScript.

## Comparison Operations

The following comparison operations are supported by ACMEScript. They are used like any other function, and return a boolean value.

operation | Description | Example |
---|---|---|

== | Equal to | `(== a b) ;; equal to: a == b` |

!=, <> | Not equal to | `(!= a b) ;; equal to: a != b` |

< | Smaller than | `(< a b) ;; equal to: a < b` |

<= | Smaller or equal than | `(<= a b) ;; equal to: a <= b` |

> | Greater than | `(> a b) ;; equal to: a > b` |

>= | Greater or equal than | `(>= a b) ;; equal to: a >= b` |

```
(if (< 1 2) ;; Evaluates to "true"
(print "true") ;; This expression is executed
(print "false")) ;; This expression is not executed
```

Note

The first operant in comparison operations may be a list or a quoted list. Only if the second operant is not a list, too, then the comparison operation is repeated for every member in the first operant's list. The comparison operation evaluates to *true* if any of these comparisons returns *true*.

## Logical Operations

The following logical operations are supported by ACMEScript. They are used like any other function, and return a boolean value.

operation | Description | Example |
---|---|---|

or, | | logical or of two or more boolean expressions |
(or a b) ;; a or b |

and, & | logical and of two or more boolean expressions |
(and a b c) ;; a and b and c |

not, ! | logical negation or one boolean expression | (not true) ;; false |

```
(or (< 1 2) (>= 4 3) (== 1 1)) ;; Returns true
(and (or true false) (not true)) ;; Returns false
```

Note

The first operant in logical operations may be a list or quoted list. Only if the second operant is not a list, too, then the logical operation is repeated for every member in the first operant's list. The logical operation evaluates to *true* if any of these operations returns *true*.

```
(and '(false false true) true) ;; Evaluates to "true"
(and '(false false false) true) ;; Evaluates to "false"
```

## Mathematical Operations

The following mathematical operations are supported by ACMEScript. They are used like any other function, and return a number value.

operation | Description | Example |
---|---|---|

+ | Add two or more numbers | (+ 1 2 3) ;; Returns 6 |

- | Subtract two or more numbers | (- 10 1 2 3) ;; Returns 4 |

* | Multiply two or more numbers | (* 6 7) ;; Returns 42 |

/ | Divide two or more numbers | (/ 23 5) ;; Returns 4.6 |

** | Calculates the power of two or more numbers | (** 2 3 4) ;; Returns 4096 |

% | Calculates to modulo of two or more numbers | (% 100 21 13) ;; Returns 3 |