以下函数在Scheme编程语言中做了什么

时间:2014-09-10 17:52:20

标签: functional-programming scheme lisp mit-scheme

(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输入的值显然不适用于该功能。请帮助。

1 个答案:

答案 0 :(得分:2)

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

如果你这样调用代码:

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

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