使用 force 和 delay 以生成和过滤样式生成偶数整数流
Use force and delay to produce stream of even integers in generate-and-filter style
我正在尝试学习 delay
和 force
在 Scheme 中的用法。我创建了一个输出列表中偶数的函数。现在我正在尝试将 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,在左下角 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)
我正在尝试学习 delay
和 force
在 Scheme 中的用法。我创建了一个输出列表中偶数的函数。现在我正在尝试将 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,在左下角 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)