【发布时间】:2020-09-08 07:51:32
【问题描述】:
在我的代码中,符号必须区分大小写:
(eq 'p 'P)
nil
所以我添加了:
(setf (readtable-case *readtable*) :invert)
在文件的开头,效果很好。
但我还必须用两个符号制作一个符号(合并它们)
(foo 'K 'm)
Km
“合并”两个符号我发现了以下功能 (here):
(defun symbol-append (&rest symbols)
(intern (apply #'concatenate 'string
(mapcar #'symbol-name symbols))))
有效但不维持这种情况:
CL-USER> (symbol-append 'K 'm)
KM
如何在保持大小写的同时合并两个符号?
编辑
'|一些符号|做到了,但我不得不退缩
(setf (readtable-case *readtable*) :upcase)
所以现在在我的“数据库”中我有像 |Km| 这样的东西。或 |PHz|这很好。
现在的问题是程序的用户要插入像 Km 或 PHz 这样的东西,我想与我的数据库中的内容进行比较,但是:
(eq '|Km| 'Km)
nil
因为Km 被实习为KM 和|Km| 作为|Km|。
请帮忙。
【问题讨论】:
-
它确实维持这种情况:
(symbol-append '|K| '|m|)->|Km|
标签: lisp common-lisp symbols