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.