有哪些方法可以保存Common Lisp或Scheme的REPL状态?
由于
答案 0 :(得分:2)
这取决于实现,但通常可以保存图像。但请注意,引用外部资源的某些内容可能无法保存 - 例如,连接到文件的流的状态或线程中的执行状态(尽管我相信某些方案的实现允许可保存的延续)。它不是语言本身的一部分。
答案 1 :(得分:2)
您的实施必须支持这一点。例如,SBCL有sb-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。