gpt4 book ai didi

stream - 显示无限流的连续项目的问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:06 25 4
gpt4 key购买 nike

; 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

看来流工作正常;但是当我尝试显示它时:

=> (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.

据我所知,调用 stream-for-each 时带有 2 个参数,但我一定遗漏了一些东西。如有任何澄清,我将不胜感激。代码取自:http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5.3

最佳答案

您只是在递归调用 (stream-for-each (stream-cdr s)) 中缺少一个参数。您的函数 stream-for-each 具有契约(Contract) 过程?溪流? -> '完成 但你只提供了一个流(这是错误所说的)。

关于stream - 显示无限流的连续项目的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com