重複の可能性:
LISP - 再初期化後もグローバル変数が古い値を保持する
私は現在、Lisp (Common Lisp を使用) でいくつかのコースワークを行っていますが、私が抱えているこの問題を解決する場所が他にありません。
説明するのは難しいですが、ここに行きます..
状況: 多項式である p1 と p2 という 2 つのグローバル変数があります。私の仕事は多項式計算機を作成することで、これまでのところうまくいっています。
多項式要素を特定の形式 3x^2 == ((x 2) 3) で保持し、多項式要素の両方のリストを再帰的に実行する 2 つの関数を作成しました。
3x^2 と 2x^2 を加算すると、答えは 5x^2 (または "((x 2) (3+2))") になります。
要素が計算される/計算できないときはいつでも追加される 3 番目のリスト、結果があります。
問題: 一緒に追加できる 2 つの要素を使用して、結果に追加される一時変数を作成します。ただし、何をしてもグローバル変数が変更されます。
let、lambda、さまざまな関数などを試しました。数日間立ち往生しているので、助けていただければ幸いです:)
ここに私が意味することの小さな例があります:
(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)