有办法保存Common Lisp或Scheme的REPL状态吗?

时间:2010-10-18 14:24:32

标签: lisp scheme save common-lisp

有哪些方法可以保存Common Lisp或Scheme的REPL状态?

由于

3 个答案:

答案 0 :(得分:2)

这取决于实现,但通常可以保存图像。但请注意,引用外部资源的某些内容可能无法保存 - 例如,连接到文件的流的状态或线程中的执行状态(尽管我相信某些方案的实现允许可保存的延续)。它不是语言本身的一部分。

答案 1 :(得分:2)

您的实施必须支持这一点。例如,SBCLsb-ext:save-lisp-and-die,有两个警告:

  • 堆栈已展开,

  • 之后你无法继续(显然)。

答案 2 :(得分:2)

大多数Scheme实现编译为C或其他一些中间格式,所以我知道没有提供保存当前图像状态的。大多数人会编译二进制文件,所以如果你在阅读实施手册之后就是这样了。

另一方面,Common Lisp通常以实现定义的方式提供它。 SBCL具有前面提到的save-lisp-and-die函数,CCL具有save-application。这是我使用的唯一两个Lisp,因此如果您正在使用其他实现,请务必查看文档。

如果您想了解如何完成此操作,请为SBCL here's one。对于CCL,请查看Apple Current Converter example。该教程完成了有关如何保存生成的应用程序包的示例步骤。

编辑:这是SBCL的另一个easier example