共LISP - 减法

我有这样的功能:共LISP - 减法

(defun test (variable) 

(cond

((null variable) nil)

((< (- 12 (other-function variable) 3) 0) 1)

(t (- 12 (other-function variable) 3))

)

)

的想法是,如果12的与3的函数的值的减法运算的结果小于0,则返回1,否则,它只会进行减法。 “其他功能”返回一个数字。 当我运行此功能时,lispworks冻结。但是,如果我运行没有第一个条件的功能:

(defun test (variable) 

(cond

((null variable) nil)

(t (- 12 (other-function variable) 3))

)

)

它使得减法没有任何问题。 有人可以帮忙吗? 谢谢。

编辑: 我试过这样与设:

(defun test (variable) 

(let (x (other-function variable))

(cond

((null variable) nil)

((< (- 12 x 3) 0) 1)

(t (- 12 x 3)))

)

)

,但我仍然得到了同样的问题lispworks至极,它冻结。当我没有以下条件运行:

((< (- 12 x 3) 0) 1) 

此功能正常工作。

回答:

除非您想出完整的代码和测试用例,否则不能复制。

CL-USER 1 > (lisp-implementation-type) 

"LispWorks"

CL-USER 2 > (defun test (variable)

(cond

((null variable) nil)

((< (- 12 (other-function variable) 3) 0) 1)

(t (- 12 (other-function variable) 3))))

TEST

CL-USER 3 > (defun other-function (foo) (+ foo 1))

OTHER-FUNCTION

CL-USER 4 > (test 5)

3

CL-USER 5 > (test 500)

1

另外:LispWorks通常不会 '冻结' 上的错误。

以上是 共LISP - 减法 的全部内容, 来源链接: utcz.com/qa/257671.html

回到顶部