回到过去的状态(Go back to last state)

2019-08-16 19:45发布

有没有办法回去了运行时的最后状态? 总之,节省运行时间,并重新加载它。 但核心图片太大(我做一个小游戏:-),所以我想出了一个主意,保存一些重要的数据,并开始在某一行(可能还有堆栈信息)上运行。

例如:

(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的做到这一点在所有...可能有人请给我一些想法?

Answer 1:

这是如何工作依赖于Common Lisp实现。 咨询手册:

  • Clozure Common Lisp的- > 保存应用程序
  • SBCL - > 保存核心图片
  • LispWorks - > 保存图像
  • CLISP - > 保存图像

  • 其他几种实现...



Answer 2:

你可能会想尝试实施亚历克斯瓦尔特的世界(第4章他的论文 )。 这将允许您为“萌芽”一个新的世界,在它运行计算,并且或者定期提交在孩子世界的变化父世界,或者中止并回滚到父母的状态。 这就像一个无限撤消,但你可以发芽撤消多个世界/链。



文章来源: Go back to last state