我一直认为 assoc-delete-all
的效果是会原地修改 alist, 但是今天试了下 (assoc-delete-all "C" org-src-lang-modes)
, 发现 org-src-lang-modes 并没有被修改, 写成 (setq org-src-lang-modes (assoc-delete-all "C" org-src-lang-modes))
才可以. 用 emacs -q 也是这样. 很困惑, 是我对 assoc-delete-all 理解有问题还是 org-src-lang-modes 有什么特别之处?
我为什么会认为 assoc-delete-all
会原地修改:
(setq xx
'(("aa" . 23)
("bb" . 24)
))
(assoc-delete-all "bb" xx)
(princ (format "xx: %s" (prin1-to-string xx)))
它执行的结果是:
xx: (("aa" . 23))
这里 “bb” 就被删除了.