4

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

我习惯了 slimv,一个 vim 脚本来扩展对 vim 的 lisp 支持。Slimv 是一个很棒的工具,它包含连接 slimv 和 lisp 解释器的 swank,但是当我在 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 中读取它,并成功调试我的程序。

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

4

3 回答 3

4

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

这是开发人员的博客(俄语),其中提到了使用的细微差别

于 2012-03-01T11:26:12.013 回答
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 端口。

于 2012-02-27T18:34:38.293 回答
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 方法的一些细节。

这么晚才回复很抱歉。将其留在这里以防有人通过搜索找到它。

于 2012-05-31T18:28:04.750 回答