2
(define (unknown (lambda (x y)
  (cond
    ((null? y) y)
    ((x (car y)) (unknown x (cdr y))))
    (else (cons (car y) (unknown x (cdr y)))))))

当谈到方案时,我是一个新手,想知道我在教科书中遇到的这个功能的目的。我的主要疑问在于 ((x (car y)) 的作用。这个表达式如何在没有任何运算符的情况下执行,但我在编译时没有遇到任何错误。虽然我无法运行该程序,因为我为 x 输入的值显然不适用于该函数。请帮助。

4

1 回答 1

3

Scheme 函数可以将函数作为参数,也可以返回函数。如果您将函数作为参数传递,则您的代码是有意义的。

如果你这样调用代码:

(unknown even? '(1 2 3 4 5))

那么它应该返回列表(1 3 5)。这是一个过滤函数,它返回 y 的成员,其中将函数 x 应用于成员的结果为假。

于 2014-09-10T18:23:06.283 回答