Что такое функция "defs" в Лиспе?
В файле "Dictio", расположенном по ссылке "Текстовая консольная версия" этого сайта, я заметил команду (?) Lisp, которая называется defs
,
Я предполагаю, что это что-то похожее на defun
, но не могу найти какую-либо информацию о том, что defs
делает; это используется для определения функции или, может быть, переменной? Я хочу воспроизвести этот код с использованием современных методов, и это поможет узнать цель defs
,
defs
вызовы, кажется, также включают в себя больше, чем имя перед аргументами (я ожидаю, что это будет читать (defs name () body
).
Глядя на первую функцию в списке, кажется, что в это "определение функции" [в частности, слово "особенности" "включается больше, а в третьей функции есть ['semantics']
включается после того, что кажется именем функции (перед аргументами).
1 ответ
DEFS
определяется программным обеспечением в файле SYSCOM
,
Это FEXPR, функция, которая получает аргументы без оценки. У Common Lisp такой функции нет. Вместо этого он использует макросы.
Пример использования:
(DEFS \#COLOR
FEXPR (LAMBDA (A)
(EVAL (SUBST (CAR A)
'COLOR
'(OBJECT
(MARKERS\: (\#PHYSOB COLOR)
PROCEDURE\: ((\#COLOR *** COLOR)))))))
PRIORITY 192.
SYS (\#PROPERTY))
Здесь у вас есть символ #COLOR
, Он получает функцию (на самом деле FEXPR), определенную под этим именем. Также это ставит PRIORITY
а также SYS
на список свойств символа. таким образом DEFS
используется для определения символов с функциями и свойствами в одной определяющей форме.