在 Common Lisp 中将 FUNCTION 转换为 STRING 或 SYMBOL

Convert a FUNCTION to a STRING or SYMBOL in Common Lisp

在common lisp中是否可以将函数转换为符号或字符串以供进一步使用?我的意思是从 #'+.

得到 "+"#:|+|
CL-USER> (nth-value 2 (function-lambda-expression #'sin))
SIN

唯一的标准方法是 function-lambda-expression 保证return任何有用的东西。

从来没有,CLISP 和 SBCL return 实际函数名称:

(nth-value 2 (function-lambda-expression #'+))
==> +

或者,如果您愿意,

(symbol-name (nth-value 2 (function-lambda-expression #'+)))
==> "+"
(defun function-name (fn)
  (string-downcase (symbol-name (nth-value 2 (function-lambda-expression fn)))))

(function-name #'atom) => "atom"