我正在通过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)
我收到一条消息说:正在中止!:超出了最大递归深度.
我猜测 …