2016-03-06 14 views
0

我正试图学习在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)) 
+0

什么计划实现您使用?错误是说“函数delay”没有被定义。 –

回答

0

确保你使用正确的语言,因为这两个forcedelay是原始的形式,标准语言的一部分。如果使用的球拍,在左下角选择“从源确定语言”,然后键入以下内容:

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

缩进是拙劣的,但“延迟”是在* let中定义的。错误是*'unbound symbol:“delay”'*(一些库加载问题?执行没有指定......) –

+0

@WillNess很好!假设OP使用Racket,我重写了我的答案,当选择了错误的语言时,这样的错误很常见。 –

+1

我使用的是“repl.it”在线翻译,代码没有工作,但是当我在“球拍”上试用它时,它工作正常。谢谢 –