Stream 使用强制和延迟以生成和筛选样式生成偶数整数流

Stream 使用强制和延迟以生成和筛选样式生成偶数整数流,stream,scheme,filtering,delayed-execution,Stream,Scheme,Filtering,Delayed Execution,我试图学习在Scheme中使用delay和force。我创建了一个输出列表中偶数的函数。现在我正在尝试使用delay和force函数。但我得到了错误:未绑定符号:“延迟”[ 有人能解释一下我做错了什么吗 (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

我试图学习在Scheme中使用
delay
force
。我创建了一个输出列表中偶数的函数。现在我正在尝试使用
delay
force
函数。但我得到了
错误:未绑定符号:“延迟”[

有人能解释一下我做错了什么吗

(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))

确保使用正确的语言,因为
force
delay
都是标准语言的基本形式。如果使用Racket,请在左下角选择“从源代码确定语言”,然后键入以下内容:

#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)

缩进是错误的,但是
delayed
在定义缩进的
let
中。错误是
未绑定符号:“延迟”
(一些库加载问题?未指定实现…@WillNess good catch!我重写了我的答案,假设OP使用的是Racket,这样的错误在选择错误的语言时很常见。我使用的是“repl.it”在线解释器,代码不起作用,但当我在“Racket”上尝试时,它起了作用。谢谢您使用的是什么方案实施?错误是未定义函数
delay