1

有没有办法回到运行时的最后状态?简而言之,保存运行时并重新加载它。但是核心图像太大了(我正在制作一个小游戏:-),所以我想出了一个主意,保存一些重要数据,然后在某一行开始运行(可能还有堆栈信息)。

例如:

(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 中做到这一点......有人可以给我一些想法吗?

4

2 回答 2

5

这如何工作取决于 Common Lisp 的实现。查阅手册:

于 2013-02-07T14:48:55.500 回答
1

您可能想尝试实现 Alex Warth 的 Worlds(他的论文第 4 章)。这将允许您“萌芽”一个新世界,在其中运行您的计算,并定期将子世界中的更改提交给父世界,或者中止并回滚到父世界的状态。这就像一个无限的撤消,但您可以产生多个撤消的世界/链。

于 2013-02-08T13:54:30.093 回答