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))
是另一个错误:没有函数体的函数声明。除了给出错误的代码外,请包括您正在使用的语言。