首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包无关符号比较

包无关符号比较
EN

Stack Overflow用户
提问于 2016-11-28 11:32:34
回答 1查看 120关注 0票数 4

我有两个包裹,每个包裹都有相同的符号:

代码语言:javascript
复制
(make-package "package1")
(make-package "package2")
(intern "SYMBOL" (find-package "PACKAGE1"))
(intern "SYMBOL" (find-package "PACKAGE2"))

我想比较一下它们。我需要能写出这样的s表达式:

代码语言:javascript
复制
(package-agnostic-eq 'package1::symbol 'package2::symbol) ; => t

,做这件事最优雅和最直接的方法是什么?

特别是,我对内置操作符感兴趣。下面是我想出的函数:

代码语言:javascript
复制
(defun package-agnostic-eq (sym1 sym2)
  (string= (symbol-name sym1) (symbol-name sym2)))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 11:47:29

STRING=/STRING-EQUAL使用它的参数字符串指示符,而不仅仅是字符串。这意味着你也可以比较符号名。

代码语言:javascript
复制
CL-USER> (make-package :foo)
#<PACKAGE "FOO">
CL-USER> (make-package :bar)
#<PACKAGE "BAR">
CL-USER> (intern "QUUX" :foo)
FOO::QUUX
NIL
CL-USER> (intern "QUUX" :bar)
BAR::QUUX
NIL
CL-USER> (string= 'foo::quux 'bar::quux)
T
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40843293

复制
相关文章

相似问题

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