2015-05-10 7 views
0

В файле «Dictio», расположенном по ссылке «Текстовая консольная версия» this site, я заметил команду Lisp (?), Называемую defs.Что такое функция defs в Lisp?

Я предполагаю, что это что-то похожее на defun, но я не могу найти информацию о том, что делает defs; используется ли она для определения функции или, может быть, переменной? Я хочу воспроизвести этот код с использованием современных технологий, и это поможет узнать цель defs.

The defs звонков, кажется, также включает в себя больше, чем имя перед аргументами (я бы ожидать, что читать (defs name() body).

Глядя на первую функцию в списке, то, как представляется, более включен в этом «определение функции» [слово «особенности» конкретно] и в третьей функции, есть ['semantics'], включенный после того, что представляется именем функции (перед аргументами).

+0

Он определен в файле SYSCOM. –

+0

Мне было интересно, почему кто-то отметит этот вопрос как «не исследованный» ... Я посмотрел, но явно не достаточно. Спасибо, Райнер. – StandardOutput

ответ

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^