Я хотел бы добавить некоторые метаданные в класс анонимных функций, чтобы их было легко идентифицировать. Пока все мои идеи хакерские или сомнительные:Выполнение анонимных функций легко различимо
Элемент plist будет работать, но, видимо, это только символы, а не лямбды.
я мог вставить что-то в строку документации:
(lambda (x) "is-special" ...
Но это, кажется, действительно некрасиво, или:
(lambda (x)
(if
(eq x 'special)
t
...
Даже уродливое.
Есть ли не так-плохо-хакерский способ установить атрибут для объекта функции?
Я мог бы также использовать систему типов, чтобы различать свои функции:
Размещение функции в структуре или объект CLOS возможно, но чувствует себя громоздким.
Возможно ли создать лямбда, которые являются обычным подтипом типа функции?
Могут ли объекты CLOS действовать как исполняемые функции? Я думаю о чем-то подобном атрибуту python, вызывающему.
Что касается вашего последнего вопроса, в реализации, которая имеет протокол MOP (метаобъект), вы можете использовать ['funcallable-standard-class'] (http://www.alu.org/mop/dictionary.html) и специализируются на ['print-object'] (http://www.lispworks.com/documentation/HyperSpec/Body/f_pr_obj.htm) для ваших целей. – acelent