在 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"
在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"