这样的事情存在吗?这似乎是一个基本功能,但我找不到类似的东西。
问问题
244 次
3 回答
3
(defun concatoms (a b)
(intern (concatenate 'string (symbol-name a) (symbol-name b))))
于 2012-08-11T03:21:40.597 回答
3
Onlisp(第 57 页,第 4.7 节,符号和字符串)有一个更通用的解决方案:
(defun mkstr (&rest args)
(with-output-to-string (s)
(dolist (a args) (princ a s))))
(defun symb (&rest args)
(values (intern (apply #'mkstr args))))
使用symb
您可以连接字符串、符号、数字等。
于 2012-08-11T07:51:43.050 回答
0
您要做的是生成新符号。您可以使用intern
或使用make-symbol
(取决于您是否需要符号)来执行此操作。但是,这也是一个信号,表明您正在做一些需要更多思考的事情,从其他符号的符号名称的连接中生成符号很少是最好的事情。
如果您绝对需要创建新符号,则应该这样做:
(defun concatenate-symbols (a b &optional (package *package*))
(intern (concatenate 'string (symbol-name a) (symbol-name b)) package))
于 2012-08-11T06:21:38.207 回答