2011-05-08 174 views
8

你知道我在哪裏可以得到Common Lisp的謂詞源? (如果你願意,謂詞的內容。)例如,setq,string =等的源代碼。Predicates Common Lisp

謝謝!

+3

這通常是您正在使用的Lisp dev環境(如SLIME)的一項功能。您還必須安裝Lisp發行版的源代碼才能導航到它。 – 2011-05-09 08:38:37

回答

4

Common Lisp開發環境通常提供了一種用源代碼查找文件中定義的方法。

另外,FUNCTION-LAMBDA-EXPRESSION可能能夠恢復如果 Lisp的環境已經用於保存定義謂詞等功能的來源,

您也可以在lisp文件中搜索開源lisp實現。例如,在Clozure CL setq中定義了編譯器的/nx1.lisp文件的分佈。小費是在搜索詞的前面放置一個空格以繞過像(setq這樣的匹配項。

+0

謝謝!我不使用SLIME,但我會嘗試。 – lilawood 2011-05-09 18:08:17

+0

這給謂詞的代碼來源,如setq,字符串比較等? – lilawood 2011-05-09 21:56:22

+0

我使用MCLIDE lisp開發環境(與SLIME相同的後端)使用四種不同的Common Lisp實現進行了檢查:Clozure CL,SBCL,CLISP和MCL。既不能查找'SETQ'的定義(即使Clozure在compiler/nx1.lisp中有一個定義)。只有Clozure和MCL能夠找到'STRING ='的定義。核心功能可能會有更好的運氣。 – 2011-05-09 23:13:55

0

SETQ不是謂詞。它甚至不是一個函數,這就是爲什麼你無法通過IDE找到它的原因。 STRING =是一個謂詞和一個函數,所以效果更好。

你的意思是「原始?」爲「謂詞」?

+0

我正在尋找函數的來源,如STRING =,CHAR = ...對於這個錯誤感到抱歉。 – lilawood 2011-05-10 16:31:01

1

對於至少SBCL,SLIME可以通過按「M-」查找定義,但是您需要從源編譯SBCL才能正常工作,因爲源定義的路徑嵌入在二進制文件中,如果你使用二進制發行版,你可能不會將源文件放在同一個位置。