- 论坛徽章:
- 0
|
谢谢,问题基本解决:wink:
是delay 函数的问题,还是那个 " “山寨版” 的 delay " 好用
改了一下以后,就好了:wink:
不过我觉得好像书上对于 intergers-starting-from n 的定义也有点问题
书上为:
(define (intergers-starting-from n)
(cons-stream n (intergers-starting-from (+ n 1)))) |
这样(intergers-starting-from (+ n 1))会不停地递归地进行求值
改为下面这样就可以了~~
(define (intergers-starting-from n)
(cons-stream n (delay (intergers-starting-from (+ n 1))))) |
最终代码为:
(define-syntax delay
(syntax-rules ()
((_ x) (lambda () x))))
(define (cons-stream a b)
(cons a b))
(define (intergers-starting-from n)
(cons-stream n (delay (intergers-starting-from (+ n 1)))))
(define (integers) (intergers-starting-from 1))
(define (show x)
(define (display-line x)
(display x)
(newline))
(display-line x))
(define (stream-car stream)
(car stream))
(show (stream-car (integers))) |
[ 本帖最后由 heixia108 于 2008-11-21 23:59 编辑 ] |
|