Reflection 符号功能的对立面是什么?

Reflection 符号功能的对立面是什么?,reflection,lisp,common-lisp,Reflection,Lisp,Common Lisp,虽然符号函数'1+将函数绑定到符号,但获取特定函数绑定到的符号的方法是什么?类似于:函数符号'1+=>'1+?或者我必须自己在当前包中搜索它?希望不是 谢谢 编辑: 这是原型,但它不起作用,因为如果函数未定义但已绑定,则会出现错误-我不太理解这一点 (defun function-symbol (searched) (loop for f being the symbols in *package* do (format t "f: ~s~&" f) wh

虽然符号函数'1+将函数绑定到符号,但获取特定函数绑定到的符号的方法是什么?类似于:函数符号'1+=>'1+?或者我必须自己在当前包中搜索它?希望不是

谢谢

编辑:

这是原型,但它不起作用,因为如果函数未定义但已绑定,则会出现错误-我不太理解这一点

(defun function-symbol (searched)
  (loop for f being the symbols in *package*
       do (format t "f: ~s~&" f)
       when (and (fboundp f)
         (eq searched (symbol-function f)))
       collect f))
更多编辑:
似乎符号值被抛出,删除该检查似乎有效,但我仍然想找到更好的方法。

如果您的通用Lisp支持它,则有ANSI通用Lisp函数function-LAMBDA-EXPRESSION。它的第三个值是名称

使用LispWorks:

CL-USER 95 > (defun my-foo () )
MY-FOO

CL-USER 96 > (nth-value 2 (function-lambda-expression #'my-foo))
MY-FOO

如果您的公共Lisp支持它,则有ANSI公共Lisp函数function-LAMBDA-EXPRESSION。它的第三个值是名称

使用LispWorks:

CL-USER 95 > (defun my-foo () )
MY-FOO

CL-USER 96 > (nth-value 2 (function-lambda-expression #'my-foo))
MY-FOO

如果你问的是我认为你在问的。。。这和问哪个变量是17是一样的?如果你问我认为你在问什么。。。这和问哪个变量是17是一样的?