有没有办法回到运行时的最后状态?简而言之,保存运行时并重新加载它。但是核心形象太大了(我正在做一个小游戏:-),所以我提出了一个想法,保存了一些重要的数据,然后开始在某条线上运行(也许还有堆栈信息)。
例如:
(defun save ()
_do-some-magic-to-save-the-state-and-then-exit_)
(defvar data (list 'a 'b 'c)) ; important data
(format t "Hello ")
(save)
(format t "World!~%")
下次,软件可以从停止的位置开始。
$ software
Hello $ software
Hello $ software --load saved_state
World!
但我根本不知道如何在Common Lisp中做到这一点......有人可以给我一些想法吗?
答案 0 :(得分:5)
这是如何工作的取决于Common Lisp实现。请参阅手册:
CLISP - > Saving an Image
其他几个实施......
答案 1 :(得分:1)
您可能想尝试实施Alex Warth的世界(his thesis的第4章)。这将允许你发芽"一个新的世界,在其中运行您的计算,并定期将子世界中的更改提交到父世界,或者中止并回滚到父级状态。这就像一个无限的撤销,但你可以发芽多个世界/链的撤销。