2016-09-18 50 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