====== 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();
# 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
Das ganze lässt sich mischen:
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
Operatoren als Guard
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"