2016-04-27 83 views
0

我在CLISP定義對權力的簡單功能:EVAL:Common Lisp中未定義功能

(defun power(B E) 
    (if (= E 1) 
     B 
     (* B (power (B (- E 1)))))) 

但是,當我嘗試調用這樣的功能:

(power 2 6) 

我得到的以下錯誤:

*** - EVAL: undefined function B

我嘗試下面的代碼放在Ideone.com爲:

(defun power(B E) 
    (if (= E 1) 
     B 
     (* B (power (B (- E 1)))))) 
(setq base (read)) 
(setq exponent (read)) 
(print (power(base exponent))) 

與STDIN作爲

2 
6 

再說,STDERR引發此錯誤:

*** - EVAL: undefined function BASE

爲什麼參數 B或BASE不被看作一個可變的,但是一個功能? 數值爲自我評價爲什麼這段代碼不起作用?

+1

如何編寫函數調用?括號函數arg0 arg1 ... argn右括號。對?現在是什麼?(B( - E 1))??看起來像一個函數調用。 Lisp說的是什麼。但是B是一個變量而不是函數。所以Lisp抱怨。正確如此。 –

+1

我低調你的問題,因爲代碼缺乏適當的縮進。基本上它根本沒有縮進。請編輯您的問題並正確設置代碼格式。 –

+0

'(基指數)'也是一個函數調用。將無法工作。 –

回答

1
(defun power (B E) 
    (if (= E 1) 
    B 
    (* B (power B (- E 1))))) 

......你不能像Lisp那樣用一些其他編程語言添加「冗餘」括號。

+0

這是一個非常愚蠢的錯誤。 – RishbhSharma

+1

@RishbhSharma它與雙命名空間一起是最常見的初學者絆腳石。 – Sylwester