使用cond语句时发生意外错误

gim*_*000 2 common-lisp

Lisp的新手,有一个菜鸟问题。我的一个变量函数应该返回输入变量的绝对值。它适用于变量大于或等于0但不小于0的情况,我怀疑这是由于cond函数引起的,但我不确定。

我已经试过用方括号括起来的代码,但是没有看到为什么它失败了。我知道这不是解决此问题的最佳方法,但是我只是想在此阶段习惯于cond语句。

     (defun abs-x (x)
       (cond ((> x 0) x)
             ((= x 0) 0)
             ((< x 0) (-x))))
Run Code Online (Sandbox Code Playgroud)

输入小于0的变量时,错误消息为'-X未定义。

cho*_*oba 7

使用

    (- x)
;     ^
;     |
;  The space
;  is important.
Run Code Online (Sandbox Code Playgroud)

代替(-x)

那是因为-是标识符中的有效字符,所以-x是有效的函数名称。但是,在-和之间使用空格x,它将调用带有-一个或多个参数的函数。

  • 感谢StackOverflow = Upvote / Accept。 (2认同)