如何将最大值导入sbcl

时间:2012-02-27 11:03:43

标签: lisp common-lisp slime sbcl maxima

众所周知,Maxima基于常见的口齿不清。我正在写一个在Maxima工作的lisp程序;使用Maxima程序。我按下参数“maxima -p foo.lisp”来加载lisp文件,它运行良好。但是,我的编程很差,所以我的程序有很多错误。我想调试我的程序,但我意识到它并不那么容易。

我习惯了slimv,一个vim脚本来扩展对vim的lisp支持。 Slimv是一个很棒的工具,它包含swank以连接slimv和lisp解释器,但是当我在Maxima的Lisp模式中加载'start-swank.lisp'时,它返回了一个错误:

>> Error in CONDITIONS::CLCS-LOAD [or a callee]: The variable *LOAD-TRUENAME* is unbound.

我意识到这是由于gcl。所以我开始寻找maxima-sbcl。但是,没有官方的maxima-sbcl包。我很失望。

我想知道我是否可以将整个最大值加载到sbcl中。如果是这样,我可以在swank的REPL中读取它,并成功调试我的程序。

或者有没有人有更好的想法?

3 个答案:

答案 0 :(得分:4)

我遇到过这个项目,这可能是你正在寻找的项目 https://github.com/filonenko-mikhail/embeddable-maxima

这是提及使用细微差别的developer's blog(俄语)

答案 1 :(得分:3)

浏览Maxima文档时,似乎源代码可以由SBCL编译:

  

关于Maxima的Lisp实现的注释:

     

2 3 Clisp,CMUCL,Scieneer Common Lisp(SCL),GCL(仅限ANSI启用)   4和SBCL可以编译和执行Maxima

你可能会以这种方式获得一些牵引力:

[1] Load up your SBCL (and default core file).
[2] Load Maxima into that lisp session
[3] Save the core file
[4] Kill the swank server
[5] Replace the old core file with the new core file
[6] Restart the swank server

或者,查看Maxima网站上的“端口”页面。我在OS X找到了一个用于Maxima的SBCL fink端口。

答案 2 :(得分:2)

关于使用Lisp重建Maxima,请参阅Maxima源代码中的INSTALL.lisp。 http://maxima.git.sourceforge.net/git/gitweb.cgi?p=maxima/maxima;a=tree

INSTALL.lisp描述的方法使用了defsystem。或者,您也可以使用ASDF。假设你已经解压缩了源代码,你应该可以只做

(require 'asdf)
(asdf:operate 'asdf:load-op :maxima)

然后转储Lisp图像或立即启动Maxima,

(cl-user::run)

注意:可能我省略了有关ASDF方法的一些细节。

很抱歉迟到的回复。将此留在这里以防有人通过搜索找到它。