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未定义。
使用
(- x)
; ^
; |
; The space
; is important.
Run Code Online (Sandbox Code Playgroud)
代替(-x)。
那是因为-是标识符中的有效字符,所以-x是有效的函数名称。但是,在-和之间使用空格x,它将调用带有-一个或多个参数的函数。