2

私は古い Common Lisp book でコードを見つけ、lispworks と clozure cl で試してみました。しかし、どちらもコードを実行できません。このコードは、ペアを削除するために使用されます: (author1 . john).

(setf q '((author1 . john) (author2 . tony) (author3 . fred)))

(setf (assoc 'author1 q) nil)

御時間ありがとうございます

4

2 に答える 2

4

リストをその場で操作することはできませんが、機能的な方法で指定されたキーなしで新しいリストを取得し、変数を再割り当てできます。

(setf q (remove 'author1 q :key #'car))
于 2012-01-02T20:49:46.687 に答える
2

この関数(SETF ASSOC)は ANSI Common Lisp では定義されておらず、移植可能に定義することもできません (CL パッケージ内のシンボルに対して SETF 関数を記述することは、ANSI CL 仕様では許可されていません)。

別の方法でそれぞれのペアを削除する必要があります。

于 2012-01-02T18:13:10.573 に答える