2
リストの適切な再初期化?内部で何が起こっていますか?
私はもう少しelispを教えています、そして次の問題に遭遇しました: リスト変数をリセットしたい場合、最初の評価後に更新されません。ここにいくつかのサンプルコードがあります: (defun initilize () (setq example '(3))) (defun modify () (initilize) (message "%S" example) (setcar example 2)) ; M-x eval-buffer RET (modify) ; message --> (3) (modify) ; message --> (2) (modify) ; message --> (2) 私は2つのことに興味があります。1つ目は、「内部」で何が起こっているのかを詳しく知ることです。なぜそれが初めて機能し、その後の呼び出しで失敗するのでしょうか。 2番目のより実用的な質問は、リストを適切に再初期化する方法ですか、またはそのようなことを行う別の一般的な方法はありますか? 私が見つけた1つの回避策は、引用リストを使用して、次のようにコンテンツを評価することです。 (setq example `(,3))