符号函数的反义词是什么?

1 lisp reflection common-lisp

虽然(symbol-function '1+)给函数绑定了符号#<function 1+>,但是获取符号的方式是什么?像:(function-symbol #'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))
Run Code Online (Sandbox Code Playgroud)

更多编辑: 它似乎symbol-value是投掷,删除该检查似乎工作,但我仍然想找到一个更好的方法.

Rai*_*wig 6

如果你的Common Lisp支持它,那么就有ANSI Common 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
Run Code Online (Sandbox Code Playgroud)