相关疑难解决方法(0)

sicp cons-stream是如何实现的?

我正在通过scip的streams部分工作,并坚持如何定义流.

以下是我的代码:

(define (memo-func function)
  (let ((already-run? false)
        (result false))
    (lambda ()
      (if (not already-run?)
          (begin (set! result (function))
                 (set! already-run? true)
                 result)
          result))))


(define (delay exp)
  (memo-func (lambda () exp)))

(define (force function)
  (function))

(define the-empty-stream '())
(define (stream-null? stream) (null? stream))
(define (stream-car stream) (car stream))
(define (stream-cdr stream) (force (cdr stream)))

(define (cons-stream a b) (cons a (memo-func (lambda () b))))
Run Code Online (Sandbox Code Playgroud)

如果我按照书的描述方式定义整数:

(define (integers-starting-from n)
   (cons-stream n (integers-starting-from (+ n 1))))
(define integers (integers-starting-from 1))
Run Code Online (Sandbox Code Playgroud)

我收到一条消息说:正在中止!:超出了最大递归深度.

我猜测 …

scheme sicp

5
推荐指数
1
解决办法
2671
查看次数

标签 统计

scheme ×1

sicp ×1