如何将字符串转换为带引号的变量

时间:2014-09-11 11:02:56

标签: lisp common-lisp

让我们说我想获得一个函数的文档,我要说

(documentation 'foo 'function)

但如果我只将foofunction作为字符串呢?例如。 "foo""function"

我需要做些什么才能将它们用作documentation电话的参数?

[旁注:我正在使用clisp,但我怀疑这很重要。]

2 个答案:

答案 0 :(得分:8)

使用FIND-SYMBOL,而不是INTERN。如果要查找现有函数的文档,找到符号就足够了。 INTERN也会创建符号。

CL-USER > (find-symbol "SIN" "COMMON-LISP")
SIN
:EXTERNAL

请注意,Common Lisp符号在内部是大写的默认值。因此,您需要使用大写字符串在相应的中查找相应的符号。

另请注意,实际上并没有类似“引用变量”的内容。您想将字符串转换为符号。

答案 1 :(得分:1)

使用INTERN将字符串转换为符号。确保你大写字符串,因为与符号不同,读者不会为你做这些:

(在SBCL中测试):

* (documentation 'mapcar 'function)
"Apply FUNCTION to successive elements of LIST. Return list of FUNCTION
   return values."

* (documentation (intern "MAPCAR") (intern "FUNCTION"))
"Apply FUNCTION to successive elements of LIST. Return list of FUNCTION
   return values."