[ << Scheme-Tutorium ] | [Anfang][Inhalt][Index] | [ Schnittstellen für Programmierer >> ] |
[ < Berechnungen in Scheme ] | [ Nach oben : Einleitung in Scheme ] | [ Scheme-Konditionale > ] |
1.1.6 Scheme-Prozeduren
Scheme-Prozeduren sind ausführbare Scheme-Ausdrücke, die einen Wert ausgeben, der das Resultat ihrer Ausführung darstellt. Sie können auch Variablen verändern, die außerhalb dieser Prozedur definiert wurden.
Prozeduren definieren
Prozeduren werden in Scheme mit define
definiert:
(define (function-name arg1 arg2 ... argn) scheme-expression-that-gives-a-return-value)
Beispielsweise könnte man eine Prozedur definieren, die den Durchschnitt berechnet:
guile> (define (average x y) (/ (+ x y) 2)) guile> average #<procedure average (x y)> |
Wenn die Prozedur einmal definiert ist, wird sie aufgerufen indem man die Prozedur und die Argumente in eine Liste schreibt. Man könnte also den Durchschnitt von 3 und 12 berechnen:
guile> (average 3 12) 15/2 |
Prädikate
Scheme-Prozeduren, die Boolesche Werte ausgeben, werden oft als Prädikate (predicate) bezeichnet. Es herrscht die Übereinkunft, Prädikat-Bezeichnungen mit einem Fragezeichen abzuschließen:
guile> (define (less-than-ten? x) (< x 10)) guile> (less-than-ten? 9) #t guile> (less-than-ten? 15) #f |
Wiedergabe-Werte
Scheme-Prozeduren geben immer einen Wiedergabe-Wert (return value) aus, welcher der Wert des letzten Ausdrucks ist, der in der Prozedur ausgeführt wurde. Der Wiedergabewert kann ein beliebiger gültiger Scheme-Wert sein, auch eine komplexe Datenstruktur oder eine Prozedur.
Manchmal würden Benutzer gerne mehrere Scheme-Ausdrucke in einer Prozedur haben.
Es gibt zwei Arten, wie mehrere Ausdrücke kombiniert werden können. Die erste
Art ist die begin
-Prozedur, der es ermöglicht, dass mehrere Ausdrücke
ausgewertet werden und den Wert des letzten Ausdrucks wiedergibt.
guile> (begin (+ 1 2) (- 5 8) (* 2 2)) 4 |
Die andere Art, mehrere Ausdrücke zu kombinieren, ist eine let
-Umgebung.
In dieser Umgebung wird eine Serie von Verbindungen erstellt, und dann wird eine
Sequenz von Ausdrücken ausgewertet, die diese Bindungen einschließen können.
Der Wiedergabewert der let-Umgebung ist der Wiedergabewert der letzten Aussage
in der let-Umgebung:
guile> (let ((x 2) (y 3) (z 4)) (display (+ x y)) (display (- z 4)) ... (+ (* x y) (/ z x))) 508 |
[ << Scheme-Tutorium ] | [Anfang][Inhalt][Index] | [ Schnittstellen für Programmierer >> ] |
[ < Berechnungen in Scheme ] | [ Nach oben : Einleitung in Scheme ] | [ Scheme-Konditionale > ] |