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

时间:2016-03-06 01:11:55

标签: stream scheme filtering delayed-execution

我正在尝试学习在Scheme中使用delayforce。我创建了一个输出列表中偶数的函数。现在我尝试将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))

1 个答案:

答案 0 :(得分:0)

确保您使用的是正确的语言,因为forcedelay都是原始形式,是标准语言的一部分。如果使用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)