if

if wird über die Operatoren then und else abgebildet:

a == 1
  then print "a ist 1\n";
  else print "a ist nicht 1\n";

then und else geben den Wert zurück, der hinter ihrem Ausdruck steht:

v = a == 1 then 4711 else func();

Hier müssen then und else den gleichen Typ zurückgeben.

then und else können alleine verwendet werden:

a = value else 4711;  // value oder 4711, falls value == null;
v = value then 5711;  // 0 oder 5711, falls value != null

Appendix-Operatoren können die Rückgabe beschreiben oder verändern.

? bedeutet, dass der Wert der Bedinugng zurück gegeben wird.

C++:
if( condition )
{
  func();
  return true;
}

return false;

Genesys:
return condition then? func();

if( !condition )
  return false;
else
{
  func();
  return true;
}

return !condition else? func();

v = a == 1 then 4711 else func(); </code>

# Gibt den Wert der condition als NUMBER zurück

return condition then# print "condition is true";   // gibt 1/1.0/"true"/type(true) zurück 
                 else# print "condition is false";  // gibt 0/0.0/"false"/type(null) zurück
<code>
                 
Das ganze lässt sich mischen:          
<code>
return condition then? print "condition is true";   // gibt bool::true zurück 
                 else func();                       // func() muss ein Bool zurückgeben

return condition then 4711;                         // gibt 4711 zurück 
                 else# procedure();                 // gibt number::null zurück

<code>

Operatoren als Guard

<code>
file = ^/usr/bin/echo^;     // read, position = 0; Wie kann man write/append ausdrücken?

file else fail FileNotFound;
file("Hallo Welt");                        // Execute "echo Hallo Welt"