2.2 let, letrec und let*

► |  | Sprachebenen und Material zu Schreibe Dein Programm!

1 | Schreibe Dein Programm! - Anfänger
2 | Schreibe Dein Programm!
3 | Schreibe Dein Programm! - fortgeschritten
4 | Konstruktionsanleitungen
5 | sdp: Sprachen als Libraries
| Index

▼ | 2 | Schreibe Dein Programm!

2.1 | Signaturen
2.2 | let, letrec und let*
2.3 | Pattern-Matching
2.4 | Primitive Operationen

On this page:

let
letrec
let*

Racket
top contents ← prev up next →

### 2.2 let, letrec und let*🔗ℹ

> syntax (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.

> syntax (letrec ((id expr) ...) expr)

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

> syntax (let* ((id expr) ...) expr)

Ein let*-Ausdruck ist ähnlich zum entsprechenden let-Ausdruck, mit dem Unterschied, dass 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 contents ← prev up next →