【发布时间】:2010-10-18 14:24:32
【问题描述】:
有办法保存 Common Lisp 或 Scheme 的 REPL 状态吗?
谢谢
【问题讨论】:
标签: lisp scheme save common-lisp
有办法保存 Common Lisp 或 Scheme 的 REPL 状态吗?
谢谢
【问题讨论】:
标签: lisp scheme save common-lisp
大多数 Scheme 实现都编译为 C 或其他中间格式,所以我知道没有提供保存当前图像状态的方法。不过,大多数都会编译二进制文件,所以如果这就是您在阅读实施手册后真正想要的。
另一方面,Common Lisp 通常以实现定义的方式提供此功能。 SBCL 有前面提到的save-lisp-and-die 功能,CCL 有save-application。这是我使用的仅有的两个 Lisps,所以如果您使用的是其他实现,请务必查看文档。
如果您想了解如何完成此操作,请here's one 获取 SBCL。对于 CCL,请查看Apple Current Converter example。那里的教程以如何保存生成的应用程序包的示例步骤结束。
编辑:这是另一个,easier example SBCL。
【讨论】:
这取决于实现,但通常可以保存图像。但是请注意,某些引用外部资源的东西可能无法保存 - 例如连接到文件的流的状态或线程中的执行状态(尽管我相信某些方案的实现确实允许可保存的延续)。它不是语言本身的一部分。
【讨论】:
您的实现必须支持这一点。例如,SBCL 有 sb-ext:save-lisp-and-die,有两个注意事项:
堆栈已展开,
之后您无法继续(显然)。
【讨论】: