我有以下清单:
(1 (2))我想用(2)代替(2 (3)),以便获得:
(1 (2 (3)))如下所示使用subst不返回所希望的结果:
(subst '(2 (3)) '(2) '(1 (2)))有一种简单的方法来执行替换吗?
发布于 2014-08-19 14:22:08
默认情况下,subst使用eql,您必须指定:test参数来使用#'equal,以获得所需的内容。
CL-USER> (subst '(2 (3)) '(2) '(1 (2)) :test #'equal)
(1 (2 (3)))正如您所看到的,两个直接指定的列表不是EQL,但它们是相等的:
CL-USER> (eql '(2) '(2))
NIL
CL-USER> (equal '(2) '(2))
T阅读更多的about eq, eql, equal and eqaulp difference在lisp。
https://stackoverflow.com/questions/25385648
复制相似问题