在Lisp代码中使用(sqrt x)

时间:2013-09-14 18:36:24

标签: lisp common-lisp clisp

我在lisp中编写符号区分时遇到了一些问题。 我正在尝试编写sqrt(x)的派生词,但是当我在代码中使用这个变量时,它会告诉我x未定义。

;----------------------------------------
;       deriv sqrt
;----------------------------------------
(defun derivsqrt (expr var)
  (smult (smult (sdiv 1 2) 
                (sqrt (second expr)))  ; This line gives me error
         (deriv (second expr) var)))

我称这个函数为:

((eq'坊(first expr))
    (derivsqrt expr var))

我正在测试它:(衍生'(sqrt(* 3 x))'x)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

(second expr)是列表(* 3 x),它不是数字,但函数sqrt需要一个数字作为其参数。既然你说你想要进行符号区分,你可能应该返回一个带有符号sqrt的列表,而不是调用该函数。