Rückgaben und Beendigung
Es stehen zwei Ausdrücke zur Verfügung, die die Ausführung der aktuellen Unterroutine oder des Programms abschließen. und return
die fail
Ausdrücke. Im Allgemeinen können aufrufbare Elemente ihre Ausführung beenden, bevor alle ihre Anweisungen mit einem - oder fail
-return
Ausdruck ausgeführt werden. Ein return
Ausdruck beendet lediglich die Ausführung des aktuellen Aufrufs, während ein fail
die Ausführung des gesamten Programms beendet und zu einem Laufzeitfehler führt.
Rückgabeausdruck
Der return
Ausdruck verlässt das aktuell aufrufbare Element und gibt die Steuerung an den Aufgerufenen zurück. Sie ändert den Kontext der Ausführung, indem ein Stapelrahmen per Pop entfernt wird.
Der Ausdruck gibt immer einen Wert an den Kontext des Aufgerufenen zurück. es besteht aus dem Schlüsselwort (keyword) return
, gefolgt von einem Ausdruck des entsprechenden Typs. Der Rückgabewert wird ausgewertet, bevor Beendigungsaktionen ausgeführt und die Steuerung zurückgegeben wird. Zu diesen Beendigungsaktionen zählen z. B. das Bereinigen und Freigeben von Qubits, die im Kontext der aufrufbaren Komponente zugeordnet sind. Bei der Ausführung in einem Simulator oder Validator umfassen die Beendigungsaktionen häufig auch Prüfungen, die sich auf den Zustand dieser Qubits beziehen – etwa, ob sie ordnungsgemäß von allen noch aktiven Qubits getrennt wurden.
Der return
Ausdruck am Ende eines aufrufbaren , der einen Unit
Wert zurückgibt, kann ausgelassen werden. In diesem Fall wird die Steuerung automatisch zurückgegeben, wenn alle Anweisungen und alle Beendigungsaktionen ausgeführt wurden. Aufrufbare Elemente können mehrere return
Ausdrücke enthalten, obwohl die angrenzende Implementierung für Vorgänge, die mehrere return
Ausdrücke enthalten, nicht automatisch generiert werden kann.
Beispiel:
return 1;
oder
return ();
Fehlerausdruck
Der fail
Ausdruck beendet die Berechnung vollständig. Sie entspricht einem schwerwiegenden Fehler, der zum Abbruch des Programms führt.
Sie besteht aus dem Schlüsselwort (keyword) fail
, gefolgt von einem Ausdruck vom Typ String
.
Sollte String
Informationen zum aufgetretenen Fehler bereitstellen.
Beispiel:
fail "Impossible state reached";
oder mithilfe einer interpolierten Zeichenfolge,
fail $"Syndrome {syn} is incorrect";
Zusätzlich zum angegebenen String
sammelt und ermöglicht ein fail
Ausdruck idealerweise das Abrufen von Informationen über den Programmzustand. Dies erleichtert die Diagnose und Behandlung der Fehlerquelle, erfordert die Unterstützung vonseiten der ausführenden Runtime und Firmware und kann von Ziel zu Ziel variieren.