Stream 关于显示无限流的连续项的问题
现在测试它Stream 关于显示无限流的连续项的问题,stream,lisp,scheme,Stream,Lisp,Scheme,现在测试它 ; defining stream-for-each (define (stream-for-each proc s) (if (stream-null? s) 'done (begin (proc (stream-car s)) (stream-for-each (stream-cdr s))))) ; Defining a method to display the stream (define (display-stream s)
; defining stream-for-each
(define (stream-for-each proc s)
(if (stream-null? s)
'done
(begin (proc (stream-car s))
(stream-for-each (stream-cdr s)))))
; Defining a method to display the stream
(define (display-stream s)
(stream-for-each display-line s))
(define (display-line x)
(newline)
(display x))
; Creating a stream that uses Newton-Raphson
; method to find the Square Root of 2
(define (sqrt-improve guess x)
(avg guess (/ x guess)))
(define (sqrt-stream x)
(define guesses
(cons-stream 1.0
(stream-map (lambda (guess)
(sqrt-improve guess x))
guesses)))
guesses)
因此,流似乎工作正常;但是,当我尝试显示它时:
=> (stream-ref (sqrt-stream 2) 11)
Value: 1.414213562373095
从我看到的情况来看,每个流都用2个参数调用,但我肯定遗漏了什么。如有任何澄清,我将不胜感激。代码取自:您只是在递归调用
(stream for each(stream cdr s))
中缺少一个参数。每个的函数流是否具有契约过程?流?->'已完成
,但您只为其提供了一个流(这就是错误所说的)。您只是在递归调用中缺少了一个参数(stream for each(stream cdr s))
。每个
的函数流是否具有契约过程?流?->'已完成
,但您只为其提供了一个流(错误就是这样说的)
=> (display-stream (sqrt-stream 2))
1.
;The procedure #[compound-procedure 13 stream-for-each]
has been called with 1 argument; it requires exactly 2 arguments.