EVAL:Common LISP中的未定义函数

时间:2016-04-27 14:51:58

标签: lisp common-lisp eval read-eval-print-loop

我在CLISP中定义了一个简单的功能函数:

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

但是当我尝试这样调用函数时:

(power 2 6)

我收到以下错误:

  

*** - EVAL:未定义的函数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:未定义的函数BASE

为什么参数 B或BASE不被视为变量而是函数? 数值是自我评估所以为什么这段代码不起作用?

1 个答案:

答案 0 :(得分:1)

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

...你不能像使用其他编程语言一样在Lisp中添加“冗余”括号。