next up previous contents
Nächste Seite: Makros Aufwärts: ARS++ - Erste Ausbaustufe Vorherige Seite: ARS++ - erste Ausbaustufe   Inhalt

Special Forms

Fundamentalbegriff 8 (Special-Form in ARS++)   Als eine ``special-form'' wird ein Programmkonstrukt betrachtet, das nicht dem Aufruf einer Funktion entspricht, sondern das direkt vom Interpreter oder Compiler ausgewertet wird.

Für die meisten `special forms' gilt, dass die Auswertung ihrer Argumente im Unterschied zu Funktionen in C, Scheme, Pascal, etc. nicht vor der Aktivierung der auszuwertenden Funktion erfolgt, sondern erst dann, wenn sie für die Verarbeitung benötigt werden. Letzteres nenn man ``lazy evaluation'' im Unterschied zu ``eager evalutation''.

quote
Diese Special-Form, die als Wort `quote' oder als Symbol `'' geschrieben werden kann, schützt den unmittelbar folgenden Ausdruck vor Auswertung.
define
Mit dieser Special-Form erfolgt eine explizite Namensvergabe, das Hauptelement der Bildung einer Abstraktion.
set!
Mit `set!' wird einer Variablen ein Wert zugewiesen.
begin
Hiermit wird eine Sequenz von auszuwertenden Ausdrücken eröffnet.
let
Mit `let' wird eine lokale Umgebung erzeugt, in der Variable deklariert, initialisiert und Ausdrücke ausgewertet werden.
if
Mit dieser Special-Form werden einfache Auswahlstrukturen gebildet.
lambda
Das berühmte `lambda' wird benutzt, um Lambda-Abstraktionen zu bilden, denen meistens mit `define' ein Name gegeben wird.
call-with-current-continuation
Mit dieser Special-Form wird eine Funktion aufgerufen, der als einziges Argument die `current-continuation' übergeben wird, d.h. eine Funktion, bei deren Aufruf das Programm an dieser Stelle fortgesetzt wird, als ob sonst nichts geschehen wäre.
apply
Diese Special-Form dient dem Aufruf einer Funktion ähnlich einer `normalen' Synthese, bei der jedoch die Argumente nicht einzeln, sondern als geschlossene Liste übergeben werden.
load
Mit `load' wird das Laden von auszuwertenden Ausdrücken aus einer Datei veranlasst.
evals
Diese Pseudo-Operation kann mit dem `eval' in Scheme verglichen werden. Während in Scheme allerdings beliebige Ausdrücke als Argument von `eval' erscheinen dürfen, kann `evals' in ARS++ nur Symbole auswerten.
defmacro
Diese Special-Form wird verwendet, um Anwendermakros zu definieren, d.h. Code-Sequenzen, die vom Compiler in andere Code-Sequenzen zu übersetzen sind.
quit
Mit `quit' wird die Ausführung eines Programmes beendet.

Man beachte, dass es in A++ gegenüber den 13 Special-Forms und den unten aufgeführten 6 Makros nur zwei Pseudo-Operationen gibt, nämlich `define' und `lambda'.


next up previous contents
Nächste Seite: Makros Aufwärts: ARS++ - Erste Ausbaustufe Vorherige Seite: ARS++ - erste Ausbaustufe   Inhalt

Georg P. Loczewski 2003-07-18
Buchbestellung hier!!!