2012-01-02 5 views
2

古い共通のlispの本でそのコードを見つけ、lispworksとclozureで試してみましょう。しかし、両方ともコードを実行することはできません。このコードは、ペアを削除するために使用されます:(author1 . john)。お時間をCommon Lisp:setqとassocを使ってalist内のペアを削除する

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

(setf (assoc 'author1 q) nil) 

おかげ

答えて

4

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

(setf q (remove 'author1 q :key #'car)) 
2

機能(SETF ASSOC) ANSI Common Lispの中で定義されていないため、可搬性に定義することはできません(シンボルのSETF関数を記述するためにANSI CL仕様によって許可されていませんCLパッケージ内)。

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

関連する問題