Scheme/Racket:应为变量,但发现数字错误

Scheme/Racket:应为变量,但发现数字错误,scheme,racket,Scheme,Racket,我已经在表单中定义了一个函数名称 (定义(名称x y z)(函数…) 我用参数int1int2int3在这样一个新行上调用name (定义(名称int1 int2 int3)) 出于某种原因,我收到了错误消息: define:需要一个变量,但找到了一个数字。 我对语言(Racket/Scheme)是新手,所以我想知道是什么让Racket博士期望变量?我已经多次将这种精确形式用于整数,并且没有任何问题 下面是一个如何定义函数以及如何在定义后使用函数的示例 (define (add-them x y

我已经在表单中定义了一个函数
名称
(定义(名称x y z)(函数…)

我用参数
int1
int2
int3
在这样一个新行上调用
name
(定义(名称int1 int2 int3))

出于某种原因,我收到了错误消息:
define:需要一个变量,但找到了一个数字。


我对语言(Racket/Scheme)是新手,所以我想知道是什么让Racket博士期望变量?我已经多次将这种精确形式用于整数,并且没有任何问题

下面是一个如何定义函数以及如何在定义后使用函数的示例

(define (add-them x y z)  ; note x, y, and, z must me names
  (+ x y z))

(add-them 1 2 3)          ; no  define  when add-them is used.

结果是6。

代码中的裸符号,如
i
cons
+
,都是变量。他们评估价值。对于
+
,当不受词法绑定的影响时,将对过程求值以进行添加

(+ab)
是包含3个变量的代码。变量
+
需要计算为一个过程,
a
b
需要计算为
#
期望的类型


如果把括号放在C中,
+(12)
,那么这就是两个表达式。第一个
+
计算为一个过程,但不使用该值,下一个表达式
(1 2)
,这显然是一个错误,因为
1
不是一个过程

尽管这是一个月前的帖子,但我相信这是一个答案。
首先,您定义了函数
名称

(define (name x y z) (function...))
(define (name int1 int2 int3))
现在,您已尝试调用
name

(define (name x y z) (function...))
(define (name int1 int2 int3))
这里发生的事情是,racket首先看到
define
,认为您正在定义某些东西。这可能是一个函数或变量。(他们在球拍方面有相似之处。)然后转到
(名称int1 int2 int3)
。请注意,这是一个函数调用,它执行上面定义的任何操作。在本例中,我假设您已经定义了函数
name
来返回一个数字。现在我们来看
(定义一些数字)
。这是什么意思?Racket不太确定,因为它需要一个变量名。
以下两项中的任何一项都应起作用:

(define some_number (name int1 in2 int3)) //It defines `some_number` as whatever the result of the function call is.
(name int1 int2 int3) // simply calls the function with the arguments int1 int2 int3

请包括给出错误的代码,
(define(name int1 int2 int3))
是另一个错误:没有函数体的函数声明。除了给出错误的代码外,请包括您正在使用的语言。