Lisp中的“defs”功能是什么?

时间:2015-05-10 02:59:46

标签: lisp common-lisp cl maclisp

在位于this site的“纯文本控制台版本”链接的“Dictio”文件中,我注意到一个名为defs的Lisp命令(?)。

我认为这与defun类似,但无法找到defs所做的任何信息;用于定义函数,还是变量?我希望使用现代技术重现此代码,这将有助于了解defs的目的。

defs调用似乎在参数之前还包含一个以上的名称(我希望它能读取(defs name () body)。

查看列表中的第一个函数,似乎有更多内容包含在这个“函数定义”中[特别是'特征'一词],而在第三个函数中,在出现的内容之后包含['semantics']是函数的名称(在参数之前)。

1 个答案:

答案 0 :(得分:2)

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 )。它还将PRIORITYSYS放在符号的属性列表中。因此DEFS用于在一个定义形式中定义具有函数和属性的符号。