Nächste Seite: Makros
Aufwärts: ARS++ - Erste Ausbaustufe
Vorherige Seite: ARS++ - erste Ausbaustufe
Inhalt
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'.
Nächste Seite: Makros
Aufwärts: ARS++ - Erste Ausbaustufe
Vorherige Seite: ARS++ - erste Ausbaustufe
Inhalt
Georg P. Loczewski
2003-07-18
|
|