首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表LISP 'subst‘函数的等价性

列表LISP 'subst‘函数的等价性
EN

Stack Overflow用户
提问于 2014-08-19 14:11:32
回答 1查看 872关注 0票数 1

我有以下清单:

代码语言:javascript
复制
(1 (2))

我想用(2)代替(2 (3)),以便获得:

代码语言:javascript
复制
(1 (2 (3)))

如下所示使用subst不返回所希望的结果:

代码语言:javascript
复制
(subst '(2 (3)) '(2) '(1 (2)))

有一种简单的方法来执行替换吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-19 14:22:08

默认情况下,subst使用eql,您必须指定:test参数来使用#'equal,以获得所需的内容。

代码语言:javascript
复制
CL-USER> (subst '(2 (3)) '(2)  '(1 (2)) :test #'equal)
(1 (2 (3)))

正如您所看到的,两个直接指定的列表不是EQL,但它们是相等的:

代码语言:javascript
复制
CL-USER> (eql '(2) '(2)) 
NIL
CL-USER> (equal '(2) '(2))
T

阅读更多的about eq, eql, equal and eqaulp difference在lisp。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25385648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档