使用 force 和 delay 以生成和过滤样式生成偶数整数流

Use force and delay to produce stream of even integers in generate-and-filter style

我正在尝试学习 delayforce 在 Scheme 中的用法。我创建了一个输出列表中偶数的函数。现在我正在尝试将 delayforce 与函数一起使用。但是我得到 error : unbound symbol : "delay" [].

谁能解释一下我做错了什么?

(define (even-filter ls)
  (if (null? ls)  '()
    (filter even? ls)))

(even-filter '(1 2 3 4 5 88))

(let ((delayed (delay (even-filter '(1 2 3 4 5 88)))))
  (force delayed))

确保您使用的是正确的语言,因为 forcedelay 都是原始形式,是标准语言的一部分。如果使用 Racket,在左下角 select "Determine language from source",然后输入以下内容:

#lang racket

(define (even-filter ls)
  (filter even? ls))

(let ((delayed (delay (even-filter '(1 2 3 4 5 88)))))
  (force delayed))

它按预期工作:

'(2 4 88)