可能重复:
LISP - Global variable keep their old value after reinitialization临时修改全局变量
目前,我正在做一些课程和Lisp(使用Common Lisp的),并有无处可把这个问题我有。
是相当棘手的解释,但在这里不用..
情况: 我有两个全局变量,P1 P2 &,这是多项式。我的任务是创建一个多项式计算器,目前进展顺利。我保持我的多项式元素的特定格式:3x^2 ==((x 2)3),并且我创建了两个递归运行多项式元素列表的函数。如果我想将3x^2和2x^2加在一起,答案将是5x^2(或“((x2)(3 + 2))”)。
我有第三个列表,结果,每当一个元素被计算/不能被计算时,它被追加到结果中。
问题: 有两个元素我可以加在一起,我创建一个临时变量添加到结果。然而,尽管我做了什么,全局变量也会改变。
我试图让,拉姆达,各种功能等。我一直停留几天的现在和将不胜感激任何帮助,您可以给我:)
这里有一个小例子我的意思:
(setf p1 '((x 2) 2))
;2x^2
(setf p2 '((x 2) 3))
;3x^2
(if (equal (first p1) (first p2))
(progn
(setf temp p1)
(setf (second temp) (+ (second p1) (second p2)))
(append-to-result temp)
(print p1)
(print temp)))
输出:
((×2)5)
((×2)5)
非常感谢您的快速回复。 –