2016-09-18 56 views
-1

我在形式 (define (name x y z) (function...))计划/球拍:预期的变量,但发现

我打电话name与参数int1int2int3在这样
(define (name int1 int2 int3))

一个新行中定义的函数 name一编号错误

出于某种原因,我得到错误信息: define: expected a variable, but found a number.

我是新来的语言(球拍/计划),所以我想知道是什么让Dr.Racket期望变量?我用整数多次使用了这个确切形式,并且没有任何问题。

+3

请包括提供了错误的代码,'(定义(名称INT1 INT2 INT3))'是另一个错误:函数声明没有函数体。 – drRobertz

+0

除了出现此错误的代码外,请包括您正在使用的语言。 – Sylwester

回答

1

下面是如何定义函数以及如何在定义之后使用它的示例。

(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.

0

在码A裸符号,例如icons,并+,是变量。他们评估价值。对于+,当不受词法绑定的影响时,将评估为添加过程。

(+ a b)是带有3个变量的代码。变量+需要评估到一个过程,而ab需要评估到#<procedure:+>预计的类型。

如果你已经把括号如C,+(1 2)那么,那么这是两个表达式。第一个+评估为一个过程,但没有使用该值,并且下一个表达式(1 2)这显然是自1以来的错误不是过程。

0

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

(define (name x y z) (function...)) 

现在你已经试着拨打name

(define (name int1 int2 int3)) 

这里发生的事情是球拍看到define第一和认为,要定义什么。这可能是一个函数或变量。 (他们在球拍上有相似之处。)然后它转向(name int1 int2 int3)。请注意,这是一个函数调用,它可以完成上面定义的任何操作。在这种情况下,我假设你定义了你的函数name来返回一个数字。所以现在我们正在看(define some_number)。这是什么意思?球拍不太确定,因为它期待一个变量名称。
无论是下面两个中的一个应该工作:

(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