2015-05-10 60 views
0

在「Dictio」文件中,位於this site的「文本專用控制檯版本」鏈接中,我注意到一個名爲defs的Lisp命令(?)。Lisp中的函數「defs」是什麼?

我認爲這與defun類似,但我無法找到關於defs做什麼的任何信息;它是用來定義一個函數,還是一個變量?我正在尋找使用現代技術重現此代碼,這將有助於瞭解defs的目的。

defs電話似乎還包括除了名字以外的更多參數之前(我希望它讀取(defs name() body)。

望着在列表中的第一個功能,似乎更包括在此「功能定義」 [單詞「特徵」特別],並在第三個功能,有['semantics']包括這似乎是函數(的參數之前)的名稱之後。

+0

它在文件SYSCOM中定義。 –

+0

我想知道爲什麼有人會將這個問題標記爲「未研究」......我看了一下,但顯然不夠堅硬。謝謝Rainer。 – StandardOutput

回答

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用於以一種定義形式定義具有函數和屬性的符號。

相關問題