Stream 使用强制和延迟以生成和筛选样式生成偶数整数流
我试图学习在Scheme中使用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
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
。