常见的lisp是否可以将函数转换为符号或字符串以供进一步使用?我的意思是从"+"
获得#:|+|
或#'+
。
答案 0 :(得分:7)
唯一的标准方法是
function-lambda-expression
不保证不能返回任何有用的信息。
无论如何,CLISP和SBCL都返回实际的函数名称:
(nth-value 2 (function-lambda-expression #'+))
==> +
或者,如果您愿意,
(symbol-name (nth-value 2 (function-lambda-expression #'+)))
==> "+"
答案 1 :(得分:4)
CL-USER> (nth-value 2 (function-lambda-expression #'sin))
SIN
答案 2 :(得分:0)
(defun function-name (fn)
(string-downcase (symbol-name (nth-value 2 (function-lambda-expression fn)))))
(function-name #'atom) => "atom"