functional-programming - 以下函数在Scheme编程语言中的作用是什么

标签 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 输入的值显然不适用于该函数。请帮忙。

最佳答案

方案函数可以将函数作为参数,并且可以返回函数。如果您传入一个函数作为参数,您的代码就有意义。

如果你这样调用代码:

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

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

关于functional-programming - 以下函数在Scheme编程语言中的作用是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771920/

相关文章:

scheme - 如何在这里反转谓词?

macros - Define 和 let w.r.t. 之间的区别语法规则关键字

scheme - 截断(受限) Racket 中的列表

lisp - 关键字符号和带引号的符号有什么区别?

lisp - 为什么 LISP 在使用 IF 语句的函数中打印 NIL?

lisp - 一个不同的列表合并到 Lisp 中的一个新列表

types - Agda:形成所有对 {(x , y) | x 在 xs,y 在 ys}

scala - 使用功能方式处理日志消息的最佳实践是什么

java - 使用 Java8 的毕达哥拉斯三元组

Java 8 : Getting a property from a List of a List