【问题标题】:Saving lisp state保存 lisp 状态
【发布时间】:2011-10-07 10:51:33
【问题描述】:

我是 lisp 的初学者,有一个问题。 当我直接在 REPL 中编写一些代码时(没有任何 .lisp 文件!),如何保存我的解释器的工作/状态以便下次恢复并继续工作?

(我正在使用 ECL)

谢谢!对不起我的英语不好;)

【问题讨论】:

    标签: image lisp common-lisp dump ecl


    【解决方案1】:

    来自ECL manual

    传统上,Common Lisp 实现提供了一个函数 保存转储中的所有数据 将 Lisp 进程运行到文件中。结果被称为 Lisp 图像 并且可以运送到其他兼容的版本 implementations.Nowadays,对其运行的系统的控制较少 在,Lisp 实现必须非常努力地转储内存图像 并能够在之后加载和执行它们。

    ECL 选择完全避免此过程。相反,我们设想 五种不同的便携式模型,用于构建和交付您的程序。 表 1.1 中描述的模型列举了不同种类的 ECL 可以便携式生成的文件。获得一项或多项 表中提到的产品,您可以使用低级 API 在第三部分中描述。但是,我们推荐一种更简单的方法,基于 使用系统定义文件来描述你的结构 项目并让 ECL 为您构建所需的目标。这种方法是 将在以下部分进行介绍。

    (强调我的)看来,您对 ECL 不走运。但是,CLISPCCLSBCL 支持此功能,因此,如果您需要它并且可以选择切换...试试其中一个。

    【讨论】:

    • 谢谢你,德克!我将尝试建议的 impl 之一。
    【解决方案2】:

    正如 Dirk 所提到的,您可以在许多 Lisp 实现中保存图像。然而,虽然这符合您的要求,但将代码保留在图像中并不是一个好主意,因为这样会更难或无法编辑。能够获取函数的源代码是一项可选功能(即使它存在,您也会丢失 cmets 和格式化),而许多其他类型的定义根本无法以标准方式恢复。

    另一方面,如果您在 REPL 中进行了精心设置或编译时间较长,则可以使用图像来保存和恢复您的工作。

    (一些系统,尤其是 Smalltalk,确实促进了图像内的编辑代码,并具有编辑和导出工具来支持这一点,但标准化的 Common Lisp 没有,我也不知道有任何现代 CL 实现。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2012-05-02
      • 2012-08-18
      相关资源
      最近更新 更多