Function 在Common Lisp中,是否有一个函数可以从给定字符串返回符号?

Function 在Common Lisp中,是否有一个函数可以从给定字符串返回符号?,function,lisp,common-lisp,symbols,Function,Lisp,Common Lisp,Symbols,我想要 我似乎找不到这样做的函数。您在找这个吗 >(??? "car") CAR >((??? "car") '(1 2)) 1 给出:1 更新: (实习汽车)怎么样 有一些,具体取决于你想做什么 首先,这将返回该名称的现有符号(如果存在),否则将创建一个新符号 其次,如果符号存在,则返回该符号,否则返回nil(它有两个返回值,第二个返回值可用于区分“返回nil作为符号”和“返回nil作为未找到符号”) 第三,这将始终创建一个新的、不感兴趣的符号,并且几乎可以保证在这种特定情况

我想要

我似乎找不到这样做的函数。

您在找这个吗

>(??? "car")
CAR
>((??? "car") '(1 2))
1 
给出:1


更新:


(实习汽车)怎么样

有一些,具体取决于你想做什么

首先,这将返回该名称的现有符号(如果存在),否则将创建一个新符号

其次,如果符号存在,则返回该符号,否则返回nil(它有两个返回值,第二个返回值可用于区分“返回nil作为符号”和“返回nil作为未找到符号”)

第三,这将始终创建一个新的、不感兴趣的符号,并且几乎可以保证在这种特定情况下不会是您想要的

(eval (read-from-string "(car '(1 2))"))
使用:

请注意,在Common Lisp中,符号的名称在内部是大写的。 FUNCALL允许我们将符号作为函数调用。还可以将函数对象与FUNCALL一起使用

您还可以创建一个表单并评估:

CL-USER 17 > (find-symbol "CAR")
CAR
:INHERITED

CL-USER 18 > (funcall (find-symbol "CAR") '(1 2))
1


close,更像这样(eval((从字符串“car”)'(12))=1我希望能够将字符串转换为函数。没有任何东西会给出第二个表单的行为,因为CL有特殊的规则来计算表单中的运算符,它们不允许这样的构造。
CL-USER 17 > (find-symbol "CAR")
CAR
:INHERITED

CL-USER 18 > (funcall (find-symbol "CAR") '(1 2))
1
CL-USER 19 > (eval `(,(find-symbol "CAR") '(1 2)))
1
CL-USER 20 > (eval (list (find-symbol "CAR") ''(1 2)))
1