Что такое функция "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 используется для определения символов с функциями и свойствами в одной определяющей форме.

Другие вопросы по тегам