Comparison operators

==, >=, <=, !=, <>, <, > return true or false.

!= and <> are the same thing and mean "is not equal to".

Normally = is translated to == if it happens to be somewhere where GEL is expecing a condition such as in the if condition. For example

if a=b then c
if a==b then c
are the same thing in GEL. However you should really use == or := when you want to compare or assign respectively if you want your code to be easy to read and to avoid mistakes.

All the comparison operators (except for the <=> operator which behaves normally), are not strictly binary operators, they can in fact be grouped in the normal mathematical way, e.g.: (1<x<=y<5) is a legal boolean expression and means just what it should, that is (1<x and x≤y and y<5)

The <=> operator returns -1 if left side is smaller, 0 if both sides are equal, 1 if left side is larger.

To build up logical expressions use the words not, and, or, xor.

"or" and "and" are special beasts as they evaluate their arguemnts one by one, so the usual trick for conditional evaluation works here as well. (e.g., "1 or a=1" will not set a=1 since the first argument was true)