Преобразуйте ФУНКЦИЮ в СТРОКУ или СИМВОЛ в Common Lisp - PullRequest
0 голосов
/ 15 ноября 2018

Возможно ли в обычном lisp преобразовать функцию в символ или строку для дальнейшего использования? Я имею в виду получить "+" или #:|+| от #'+.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Единственный стандартный способ function-lambda-expression не гарантированно вернет что-нибудь полезное.

Тем не менее CLISP и SBCL возвращают фактическое имя функции:

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

или, если хотите,

(symbol-name (nth-value 2 (function-lambda-expression #'+)))
==> "+"
0 голосов
/ 15 ноября 2018
CL-USER> (nth-value 2 (function-lambda-expression #'sin))
SIN
...