2011-02-02 86 views
2

我有emacs SLIME和SBCL。我陷入了emacs定義爲'FORMAT'的問題,因爲格式字符串&其餘對象,所以在REPL當我試圖評估類似的東西時(格式t「hello」),我得到錯誤:Wrong類型參數:stringp,temacs和SBCL的'FORMAT'函數衝突

這是功能被覆蓋的情況嗎?我如何讓emacs使用SBCL中定義的函數?

猜想,這是相當簡單的新手問題,但它真的很難谷歌的「格式化」關鍵字:)

+5

最有可能的是,你在錯誤的REPL。緩衝區是如何命名的? – Svante 2011-02-02 16:25:48

+0

根據Jorge的回答,我使用* ielm *並可能是錯誤的REPL。 – 2011-02-03 09:13:10

回答

8

的Emacs Lisp的Common Lisp(SBCL是對它的一個實現)兩種不同語言;就好像你在問如何從你的Emacs Lisp調用Java的System.out.println

Emacs Lisp用於擴展和自定義行爲或Emacs。

Common Lisp是一種通用編程語言,其中有幾種實現,SBCL就是其中之一。它與Emacs或Emacs Lisp無關(除了可能在歷史和文化上)。

SLIME是一個工具,可以與來自Emacs內部的運行Common Lisp圖像交談,您必須先使用M-x slime啓動它;在啓動SLIME之後,您可以將表單發送到*slime-repl sbcl*緩衝區內正在運行的Common Lisp映像(在您的情況下爲SBCL)。

您會發現另一個名爲*scratch*的緩衝區,您可以在其中鍵入和評估Emacs Lisp表單。請記住,這與Common Lisp無關。

但是,您需要注意的是,有一個Emacs Lisp擴展可以將許多Common Lisp構造添加到Emacs Lisp,但它仍然是Emacs Lisp,如果您閱讀了某些內容,請不要感到困惑。

是的,起初可能會引起混淆,但不用擔心,它只是暫時的。

編輯: 我想補充一點,如果你有興趣在Common Lisp中,你應該讀一個或所有的下列書籍:

另一方面,如果您對範圍感興趣nding和定製Emacs的本身,你應該閱讀下面的書籍:

好運。

1

經過一番調查後,我發現了SLIME init腳本。emacs配置文件不正確。所以,當我使用劣等lisp時,它不是SBCL。以下是解釋此事的鏈接:slime-devel list。 因此,我在配置文件中將(setq inferior-lisp-program "/some/path/to/sbcl/executable.exe")更改爲(setq inferior-lisp-program "sbcl")。這讓我感到SBCL在它完美的性質:)