不能进入空列表

问题描述

有谁知道你是否应该能够将 acons 放到一个空列表上?我看到没有什么说你不能,但在 SBCL 上:

RDATA> (defparameter packages ())
RDATA> packages
NIL
RDATA> (acons "AER" (make-hash-table :test 'equal) packages)
(("AER" . #<HASH-TABLE :TEST EQUAL :COUNT 0 {1012B2C8B3}>))
RDATA> packages
NIL
RDATA> (push (cons "AES" (make-hash-table :test 'equal)) packages)
(("AES" . #<HASH-TABLE :TEST EQUAL :COUNT 0 {1013225A03}>))
RDATA> packages
(("AES" . #<HASH-TABLE :TEST EQUAL :COUNT 0 {1013225A03}>))
RDATA> 

解决方法

acons 返回一个新的 cons,它不会修改提供的关联列表。不过,您可以使用 C1012 Corresponding bracket ")" missing

setf