【发布时间】:2014-02-21 23:09:12
【问题描述】:
我正在尝试编写一个函数primeify,它接受一个符号并返回附加了“-prime”的符号。我想要的输出是:
[1] > (primeify 'y)
Y-PRIME
(或y-prime,此案不是这里的重点,尽管稍后可能会变得相关)。
这是我当前的(错误的)实现:
(defun primeify (sym)
(make-symbol (concatenate 'string (string sym) "-prime")))
但是,make-symbol 通过使用其他格式将其弄乱,从而破坏了输出。我的输出是:
[1]> (primeify 'y)
#:|Y-prime|
有什么方法可以避免make-symbol 完成的额外处理,或者我可以使用其他函数来完成此操作吗?这甚至可以在 lisp 中完成吗?
【问题讨论】:
-
你需要先将字符串大写
-
@VsevolodDyomkin 那删除了条(
||),但是有什么办法可以删除#:? -
如果你想要当前包中的符号,你需要使用
intern,而不是使用make-symbol获得的uninterned symbol
标签: lisp package common-lisp symbols