This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
(==> (force (delay (+ 1 2))) 3)
|
||||
|
||||
(==> (let ((p (delay (+ 1 2))))
|
||||
(list (force p) (force p))) (3 3))
|
||||
|
||||
(assert (promise? (delay (+ 1 2))))
|
||||
|
||||
|
||||
; promises computed at most once
|
||||
(define count 0)
|
||||
|
||||
(define p
|
||||
(delay
|
||||
(begin
|
||||
(set! count (+ count 1))
|
||||
(* x 3))))
|
||||
|
||||
(define x 5)
|
||||
|
||||
(==> count 0)
|
||||
(assert (promise? p))
|
||||
(==> (force p) 15)
|
||||
(assert (promise? p))
|
||||
(==> count 1)
|
||||
(==> (force p) 15)
|
||||
(==> count 1)
|
||||
|
||||
|
||||
(define (integers-starting-from n)
|
||||
(cons-stream n (integers-starting-from (+ n 1))))
|
||||
|
||||
(assert (equal? (stream-head (integers-starting-from 0) 5) '(0 1 2 3 4)))
|
||||
Reference in New Issue
Block a user