2016-04-27 49 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