这几天的sicp第三章快结束了,可是stream这边,我始终无法在drscheme中使用,因此在google大神的帮助下,找到了解决方法;
原文在这里:
http://schemewiki.org/view/Cookbook/MiscSICP
要在drscheme中使用stream,必须在代码中加入下面这部分:
[code](require (lib "defmacro.ss"))
; cons-stream : obj stream -> stream
; construct a stream whose first element is obj and whose tail is stream
; [cons-stream is a special form]
(define-macro cons-stream
(lambda (car cdr)
`(cons ,car (delay ,cdr))))[/code]
为什么要用define-macro不是很懂,我直接用define的话下面使用cons-stream构造无限流时就会报错,忘达人解释一下.
PS:知道原因了,哈哈 原来是:
[quote]定义宏可以自定义新的语法结构, 主要是可以防止求值
[/quote]
也就是 惰性求值..
原文在这里:
http://schemewiki.org/view/Cookbook/MiscSICP
要在drscheme中使用stream,必须在代码中加入下面这部分:
[code](require (lib "defmacro.ss"))
; cons-stream : obj stream -> stream
; construct a stream whose first element is obj and whose tail is stream
; [cons-stream is a special form]
(define-macro cons-stream
(lambda (car cdr)
`(cons ,car (delay ,cdr))))[/code]
为什么要用define-macro不是很懂,我直接用define的话下面使用cons-stream构造无限流时就会报错,忘达人解释一下.
PS:知道原因了,哈哈 原来是:
[quote]定义宏可以自定义新的语法结构, 主要是可以防止求值
[/quote]
也就是 惰性求值..