status: withdrawn (2005-05-17)
keywords: Binding, Lazy Evaluation
The define-immutable
form defines an
identifier whose value never changes.
The expression part of the definition is
evaluated lazily: it is not evaluated unless and until the identifier is
evaluated. This permits an immutable definition to use other definitions
in more ways than is possible when using define
in internal
definitions.
A series of immutable definitions have simple semantics, making them easy to program and understand.
(let () (define-immutable x (+ z 5)) (define-immutable y (/ 100 4)) (define-immutable z (add-10 y)) (define-immutable add-10 (add-n 10)) (define-immutable (add-n n) (lambda (x) (+ n x))) x) => 40