4

我开始学习 Scheme,我正在尝试实现我自己的 max 函数,它只给出两个参数的最大值。

我写了这样的函数: (define (myMax x y) (cond ((> x y) (x)) ((< x y) (y))))

但是每次我尝试调用它(myMax 100 40)(示例)时,我都会收到一条错误消息:
The object 100 is not applicable.

搜索 GNU 的 MIT-Scheme 的文档,他们说: This type indicates an error in which a program attempted to apply an object that is not a procedure. The object being applied is saved in the datum field, and the arguments being passed to the object are saved as a list in the operands field.
但这应该是什么意思?

奇怪的是,我实现了一个非常简单的函数,将两个数字相加,它工作得很好,一个绝对值函数也工作得很好;可能是条件搞砸了?

谢谢

4

1 回答 1

11

在 Scheme(function-name arguments)中是将函数应用于给定参数的语法。所以(x)意味着“将函数x应用于无参数”。然而x不是一个函数,编译器试图告诉你它不是“适用的”。

由于您实际上并不想 apply x,因此只需删除它周围的括号即可。(y)在其他情况下也是如此cond

于 2013-06-08T22:42:14.127 回答