我有emacs SLIME和SBCL。我陷入了emacs定义为'FORMAT'的问题,因为格式字符串&其余对象,所以在REPL当我试图评估类似的东西时(格式t“hello”),我得到错误:Wrong类型参数:stringp,t。emacs和SBCL的'FORMAT'函数冲突
这是功能被覆盖的情况吗?我如何让emacs使用SBCL中定义的函数?
猜想,这是相当简单的新手问题,但它真的很难谷歌的“格式化”关键字:)
我有emacs SLIME和SBCL。我陷入了emacs定义为'FORMAT'的问题,因为格式字符串&其余对象,所以在REPL当我试图评估类似的东西时(格式t“hello”),我得到错误:Wrong类型参数:stringp,t。emacs和SBCL的'FORMAT'函数冲突
这是功能被覆盖的情况吗?我如何让emacs使用SBCL中定义的函数?
猜想,这是相当简单的新手问题,但它真的很难谷歌的“格式化”关键字:)
的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的本身,你应该阅读下面的书籍:
好运。
经过一番调查后,我发现了SLIME init脚本。emacs配置文件不正确。所以,当我使用劣等lisp时,它不是SBCL。以下是解释此事的链接:slime-devel list。 因此,我在配置文件中将(setq inferior-lisp-program "/some/path/to/sbcl/executable.exe")
更改为(setq inferior-lisp-program "sbcl")
。这让我感到SBCL在它完美的性质:)
最有可能的是,你在错误的REPL。缓冲区是如何命名的? – Svante 2011-02-02 16:25:48
根据Jorge的回答,我使用* ielm *并可能是错误的REPL。 – 2011-02-03 09:13:10