1.11 let, letrec und let*

► |  | Sprachebenen und Material zu Die Macht der Abstraktion

1 | Die Macht der Abstraktion - Anfänger
2 | Die Macht der Abstraktion
3 | Die Macht der Abstraktion mit Zuweisungen
4 | Die Macht der Abstraktion fortgeschritten
5 | Konstruktionsanleitungen 1 bis 10
6 | Bilder konstruieren: "image.ss"
7 | Animationen: "world.ss"
8 | Turtle-Grafik: "turtle.ss"
9 | Abspielen von Audio-Dateien: "sound.ss"
10 | 3D-Liniengraphik: "line3d.ss"
11 | DMd A: Sprachen als Libraries
| Index

▼ | 1 | Die Macht der Abstraktion - Anfänger

1.1 | Definitionen
1.2 | Record-Typ-Definitionen
1.3 | Prozedurapplikation
1.4 | #t and #f
1.5 | lambda
1.6 | Bezeichner
1.7 | cond
1.8 | if
1.9 | and
1.10 | or
1.11 | let, letrec und let*
1.12 | begin
1.13 | Signaturen
1.14 | Testfälle
1.15 | Parametrische Record-Typ-Definitionen
1.16 | Eigenschaften
1.17 | Primitive Operationen

On this page:

let
letrec
let*

top← prev up next →

#### 1.11`` let, letrec und let*

( let ((id expr) ...) expr)

Bei einem let-Ausdruck werden zunächst die exprs aus den (id expr)-Paaren ausgewertet. Ihre Werte werden dann im Rumpf-expr für die Namen id eingesetzt. Dabei können sich die Ausdrücke nicht auf die Namen beziehen.

( define a 3)
( let ((a 16)
(b a))
(+ b a))
=> 19

Das Vorkommen von a in der Bindung von b bezieht sich also auf das a aus der Definition, nicht das a aus dem let-Ausdruck.

( letrec ((id expr) ...) expr)

Ein letrec-Ausdruck ist ähnlich zum entsprechenden let-Ausdruck, mit dem Unterschied, daß sich die exprs aus den Bindungen auf die gebundenen Namen beziehen dürfen.

( let* ((id expr) ...) expr)

Ein let*-Ausdruck ist ähnlich zum entsprechenden let-Ausdruck, mit dem Unterschied, daß sich die exprs aus den Bindungen auf die Namen beziehen dürfen, die jeweils vor dem expr gebunden wurden. Beispiel:

( define a 3)
( let* ((a 16)
(b a))
(+ b a))
=> 32

Das Vorkommen von a in der Bindung von b bezieht sich also auf das a aus dem let*-Ausdruck, nicht das a aus der globalen Definition.

top← prev up next →