保存lisp状态

时间:2011-10-07 10:51:34

标签: image lisp common-lisp dump ecl

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

(我正在使用ECL)

感谢名单!抱歉我的英语不好;)

2 个答案:

答案 0 :(得分:6)

来自ECL manual

  

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

     

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

(强调我的)所以看来,你对ECL运气不好。但是,CLISPCCLSBCL支持此功能,因此如果您需要此功能,并且切换是一个选项...请尝试其中一个。

答案 1 :(得分:1)

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

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

(有些系统,特别是Smalltalk,确实促进了图像中的编辑代码,并且有编辑和导出功能来支持这一点,但是标准版的Common Lisp不支持,也不知道任何现代CL实现。)< / p>