我正在尝试学习在Scheme中使用delay
和force
。我创建了一个函数来输出列表中的偶数。现在我正在尝试使用带有函数的delay
和force
。但我越来越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))
确保使用正确的语言,因为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)