2011-02-02 23 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在它完美的性质:)