2015-11-14 103 views
2

我使用sbcl+emacs+slime
我在lisp中編寫函數, 我用C-c C-c編譯,但是我已經刪除了它。我找不到它。我想知道我如何定義它。如何查看lisp(sbcl)中函數的定義?

我嘗試使用function-lambda-expression,但我得到這個:

(function-lambda-expression #'b) 
T 
B 

我希望有人可以給我一些help.Thanks事先非常感謝!


謝謝Vsevolod。 如果功能repl定義,我可以使用(descri #'function-name)得到我如何定義的功能,但如果我通過C-c C-c定義它,我只是得到source file

My attempt

+0

這不是一個重複的東西,但它可能會回答你的問題:[如何在使用粘液時跳轉到emacs中的函數定義?](http://stackoverflow.com/q/24818321/1281433)。如果您安裝了分發源,則可能會有效。 [lisp函數的實現](http://stackoverflow.com/q/33141286/1281433)不是一個很好的問題,但它也可能有幫助。 –

回答

4

根據您的調試和優化你可能會設置能夠通過describe得到它:

CL-USER> (defun f (a) (print a)) 
F 
CL-USER> (describe #'f) 
#<FUNCTION F> 
    [compiled function] 

Lambda-list: (A) 
Derived type: (FUNCTION (T) (VALUES T &OPTIONAL)) 
Source form: 
    (SB-INT:NAMED-LAMBDA F 
     (A) 
    (BLOCK F (PRINT A))) 

您可以在Souce form部分看到這裏的定義。

相關問題