私は古い Common Lisp book でコードを見つけ、lispworks と clozure cl で試してみました。しかし、どちらもコードを実行できません。このコードは、ペアを削除するために使用されます: (author1 . john)
.
(setf q '((author1 . john) (author2 . tony) (author3 . fred)))
(setf (assoc 'author1 q) nil)
御時間ありがとうございます
私は古い Common Lisp book でコードを見つけ、lispworks と clozure cl で試してみました。しかし、どちらもコードを実行できません。このコードは、ペアを削除するために使用されます: (author1 . john)
.
(setf q '((author1 . john) (author2 . tony) (author3 . fred)))
(setf (assoc 'author1 q) nil)
御時間ありがとうございます
リストをその場で操作することはできませんが、機能的な方法で指定されたキーなしで新しいリストを取得し、変数を再割り当てできます。
(setf q (remove 'author1 q :key #'car))
この関数(SETF ASSOC)
は ANSI Common Lisp では定義されておらず、移植可能に定義することもできません (CL パッケージ内のシンボルに対して SETF 関数を記述することは、ANSI CL 仕様では許可されていません)。
別の方法でそれぞれのペアを削除する必要があります。