方案参数不适用

时间:2013-06-08 22:35:39

标签: functional-programming lisp scheme mit-scheme

我开始学习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.
但那应该是什么意思呢?

奇怪的是,我实现了一个非常简单的函数,它添加了两个数字,它工作正常,也是一个绝对值函数,工作正常;难道有条件的搞砸了吗?

谢谢

1 个答案:

答案 0 :(得分:11)

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

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