在Lisp代码中使用(sqrt x)

在Lisp代码中使用(sqrt x),lisp,common-lisp,clisp,Lisp,Common Lisp,Clisp,我在用lisp编写符号微分时遇到了一些问题。 我试图写sqrt(x)的导数,但当我在代码中使用这个变量时,它告诉我x没有定义 ;---------------------------------------- ; deriv sqrt ;---------------------------------------- (defun derivsqrt (expr var) (smult (smult (sdiv 1 2) (sqrt (secon

我在用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'sqrt(第一个表达式))
(derivsqrt expr var))

我正在用:(deriv'(sqrt(*3x))'x)测试它


有人能帮忙吗?

(第二个表达式)
是列表
(*3 x)
,它不是一个数字,但函数
sqrt
需要一个数字作为参数。既然您说要进行符号微分,您可能应该返回一个包含符号
sqrt
的列表,而不是调用该函数。

该函数似乎假定
expr
是一个至少包含两个元素的列表。你在传递什么?为什么不包含错误消息?