Bearbeiten von „Scheme“
Zur Navigation springen
Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 1: | Zeile 1: | ||
Scheme ist eine funktionale | Scheme ist eine funktionale Programmiersprache die im Modul [[SE3]] verwendet wird. | ||
== Auflistung der Scheme-Funktionen == | == Auflistung der Scheme-Funktionen == | ||
Zeile 7: | Zeile 7: | ||
=== grundlegende Funktionen === | === grundlegende Funktionen === | ||
(lambda | (lambda <i>parameter</i> <i>funktion</i>) | ||
:Der Rückgabewert dieser Funktion ist eine Funktion die alle in der Liste | :Der Rückgabewert dieser Funktion ist eine Funktion die alle in der Liste <i>parameter</i> stehenden Parameter nimmt und mit den Funktionsaufrufen die in <i>funktion</i> stehen auswertet. | ||
(define | (define <i>name</i> <i>wert</i>) | ||
:Weist der Variable | :Weist der Variable <i>name</i> den wert <i>wert</i> zu. Dieser Definition gilt nur in dem Block in dem sie steht und in allen unterblöcken (ausser wenn sie verschattet wird). | ||
(let ( | (let (<i>zuweisungen</i>) <i>s-expression</i>)<br> | ||
(let* ( | (let* (<i>zuweisungen</i>) <i>s-expression</i>) | ||
:Die in | :Die in <i>zuweisungen</i> definierten Variablen können im Rumpf <i>s-expression</i> genutzt werden. Danach sind sie weg. | ||
:Bei let kann man für die Definition einer Variable nicht auf die anderen soeben definierten Variablen zugreifen. Mit let* geht das. | :Bei let kann man für die Definition einer Variable nicht auf die anderen soeben definierten Variablen zugreifen. Mit let* geht das. | ||
(quote | (quote <i>operand</i>)<br> | ||
' | '<i>operand</i> | ||
:Gibt | :Gibt <i>operand</i> zurück (ohne diesen auszuwerten). | ||
(eval | (eval <i>ausdruck</i>) | ||
:Wertet | :Wertet <i>ausdruck</i> aus und gibt dessen Rückgabewert zurück. | ||
(closure ) | (closure ) | ||
Zeile 29: | Zeile 29: | ||
=== bedingte Auswertung === | === bedingte Auswertung === | ||
(if | (if <i>bedingung</i> <i>dann</i>)<br> | ||
(if | (if <i>bedingung</i> <i>dann</i> <i>sonst</i>) | ||
:Wenn der Aufruf von | :Wenn der Aufruf von <i>bedingung</i> wahr zurückgibt ist der eigene Rückgabewert die Auswertung von <i>dann</i>, andernfalls die Auswertung von <i>sonst</i> (sofern vorhanden). | ||
(cond ( | (cond (<i>bedingung1</i> <i>ausdruck1</i>) (<i>bedingung2</i> <i>ausdruck2</i>) ... (<i>bedingungn</i> <i>ausdruckn</i>))<br> | ||
(cond ( | (cond (<i>bedingung1</i> <i>ausdruck1</i>) (<i>bedingung2</i> <i>ausdruck2</i>) ... (<i>bedingungn</i> <i>ausdruckn</i>) (else <i>ausdrucksonst</i>)) | ||
:Der eigene Rückgabewert ist die Auswertung des ersten Ausdrucks dessen Bedingung zu wahr ausgewertet wird. Wird keine zu Wahr ausgewertet ist es die Auswertung von | :Der eigene Rückgabewert ist die Auswertung des ersten Ausdrucks dessen Bedingung zu wahr ausgewertet wird. Wird keine zu Wahr ausgewertet ist es die Auswertung von <i>ausdrucksonst</i> (sofern vorhanden, sonst undefiniert). | ||
(case | (case <i>ausdruck</i> (<i>liste1</i> <i>ausdruck1</i>)(<i>liste2</i> <i>ausdruck2</i>) ... (<i>listen</i> <i>ausdruckn</i>))<br> | ||
(case | (case <i>ausdruck</i> (<i>liste1</i> <i>ausdruck1</i>)(<i>liste2</i> <i>ausdruck2</i>) ... (<i>listen</i> <i>ausdruckn</i>) (else <i>audruckelse</i>)) | ||
:Wertet | :Wertet <i>ausdruck</i> aus und vergleicht das Ergebnis mit allen Werten aus den Listen bis ein Vergleich wahr wird oder das Ende erreicht ist. Der zu einem gelungenen Vergleich gehörende Ausdruck wird ausgewertet und zurückgegeben. Sonst wird der <i>ausdruckelse</i> ausgewertet und zurückgegeben (sofern vorhanden, sonst undefiniert). | ||
=== logische Operatoren === | === logische Operatoren === | ||
(or ( | (or (<i>ausdruck1</i>) (<i>ausdruck1</i>) ... (<i>ausdruckn</i>)) | ||
:Der Rückgabewert ist wahr, wenn zumindest ein Ausdruck zu wahr ausgewertet wird. Dabei wird mit [[Lazy Evaluation]] von links nach rechts ausgewertet. Sobald dabei ein Ausdruck zu undefiniert ausgewertet wird, wird sofort undefined zurückgegeben. | :Der Rückgabewert ist wahr, wenn zumindest ein Ausdruck zu wahr ausgewertet wird. Dabei wird mit [[Lazy Evaluation]] von links nach rechts ausgewertet. Sobald dabei ein Ausdruck zu undefiniert ausgewertet wird, wird sofort undefined zurückgegeben. | ||
(and ( | (and (<i>ausdruck1</i>) (<i>ausdruck1</i>) ... (<i>ausdruckn</i>)) | ||
:Der Rückgabewert ist falsch, wenn zumindest ein Ausdruck zu falsch ausgewertet wird. Dabei wird mit [[Lazy Evaluation]] von links nach rechts ausgewertet. Sobald dabei ein Ausdruck zu undefiniert ausgewertet wird, wird sofort undefined zurückgegeben. | :Der Rückgabewert ist falsch, wenn zumindest ein Ausdruck zu falsch ausgewertet wird. Dabei wird mit [[Lazy Evaluation]] von links nach rechts ausgewertet. Sobald dabei ein Ausdruck zu undefiniert ausgewertet wird, wird sofort undefined zurückgegeben. | ||
(not | (not <i>ausdruck</i>) | ||
:Wahr, wenn | :Wahr, wenn <i>ausdruck</i> zu falsch ausgewertet wird, Undifined, wenn <i>ausdruck</i> zu undifined ausgewertet wird. | ||
=== Vergleichsoperatoren === | === Vergleichsoperatoren === | ||
(= | (= <i>zahl1</i> <i>zahl2</i> ... <i>zahln</i>) | ||
:Ist wahr wenn alle Zahlen gleich sind. | :Ist wahr wenn alle Zahlen gleich sind. | ||
(< | (< <i>zahl1</i> <i>zahl2</i> ... <i>zahln</i>) | ||
:Ist wahr wenn von zwei jeweils nebeneinander stehenden Zahlen die linke kleiner ist als die rechte. | :Ist wahr wenn von zwei jeweils nebeneinander stehenden Zahlen die linke kleiner ist als die rechte. | ||
(> | (> <i>zahl1</i> <i>zahl2</i> ... <i>zahln</i>) | ||
:Ist wahr wenn von zwei jeweils nebeneinander stehenden Zahlen die linke grösser ist als die rechte. | :Ist wahr wenn von zwei jeweils nebeneinander stehenden Zahlen die linke grösser ist als die rechte. | ||
( | (eqv? <i>ausdruck1</i> <i>ausdruck2</i>) | ||
:Wahr wenn | :Wahr wenn die Symbole die durch Auswertung von <i>ausdruck1</i> und <i>ausdruck2</i> entstehen gleich sind. | ||
(string | (string>? <i>string1</i> <i>string2</i>) | ||
:Wahr wenn | :Wahr wenn <i>string1</i> irgendwie kleiner als <i>string2</i> ist. Lexikalisch?, ASCII-Wert? | ||
(equal? <i>operand1</i> <i>operand2</i>) | |||
:Wahr, wenn beide Operanden gleich sind. | |||
(equal? | |||
:Wahr, wenn beide Operanden | |||
=== numerische Funktionen === | === numerische Funktionen === | ||
(+ | (+ <i>operand1</i> <i>operand2</i> ... <i>operandn</i>) | ||
:Gibt die Summe der Operanden zurück. | :Gibt die Summe der Operanden zurück. | ||
(* | (* <i>operand1</i> <i>operand2</i> ... <i>operandn</i>) | ||
:Gibt das Produkt der Operanden zurück. | :Gibt das Produkt der Operanden zurück. | ||
(/ | (/ <i>operand1</i> <i>operand2</i>) | ||
:Gibt den Quotienten der Operanden zurück. | :Gibt den Quotienten der Operanden zurück. | ||
(- | (- <i>operand1</i> <i>operand2</i>) | ||
:Gibt die Differenz der Operanden zurück. | :Gibt die Differenz der Operanden zurück. | ||
(sqrt | (sqrt <i>operand</i>) | ||
:Gibt die Quadratwurzel von | :Gibt die Quadratwurzel von <i>operand</i> zurück. | ||
(sin | (sin <i>operand</i>) | ||
:Gibt deb Sinus von | :Gibt deb Sinus von <i>operand</i> zurück. | ||
( | (exp <i>basis</i> <i>exponent</i>) | ||
:Gibt | :Gibt <i>basis</i> hoch <i>exponent</i> zurück. | ||
(modulo | (modulo <i>operand1</i> <i>operand2</i>) | ||
:Gibt den Rest bei ganzzahliger Division zurück. | :Gibt den Rest bei ganzzahliger Division zurück. | ||
=== Meta-Funktionen === | === Meta-Funktionen === | ||
(display " | (display "<i>text</i>") | ||
:Schreibt | :Schreibt <i>text</i> auf die Standardausgabe. | ||
(error " | (error "<i>text</i>") | ||
:Schreibt | :Schreibt <i>text</i> als Fehlermeldung und malt einen [[Bug]] dazu. | ||
=== Listen-Funktionen === | === Listen-Funktionen === | ||
(car | (car <i>liste</i>) | ||
:Gibt den Kopf der | :Gibt den Kopf der <i>liste</i> zurück. | ||
( | (cdr <i>liste</i>) | ||
:Gibt | :Gibt den Rumpf der <i>liste</i> zurück. | ||
=== Typprädikate === | === Typprädikate === | ||
(symbol | (symbol <i>operand</i>) | ||
:Wahr, wenn | :Wahr, wenn <i>operand</i> ein Symbol ist. | ||