Scheme supports delayed evaluation through the delay form and the procedure force. (define a 10) (define eval-aplus2 (delay (+ a 2))) (set! a 20) (force eval-aplus2) ===> 22 (define eval-aplus50 (delay (+ a 50))) (let ((a 8)) (force eval-aplus50)) ===> 70 (set! a 100) (force eval-aplus2) ===> 22 The lexical context of the original definition of the promise is preserved, and its value is also preserved after the first use of force.
Δείτε επίσης: Οκνηρή αποτίμηση Η Scheme υποστηρίζει την καθυστερημένη αποτίμηση (delayed evaluation) μέσω της μορφής delay και της διαδικασίας force. (define a 10) (define eval-aplus2 (delay (+ a 2))) (set! a 20) (force eval-aplus2) ===> 22 (define eval-aplus50 (delay (+ a 50))) (let ((a 8)) (force eval-aplus50)) ===> 70 (set! a 100) (force eval-aplus2) ===> 22 Το λεκτικό περιβάλλον του αρχικού ορισμού της υπόσχεσης (promise) διατηρείται, και η τιμή του επίσης διατηρείται μετά από την πρώτη χρήση της force.