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

これがどのように機能するかは、CommonLispの実装によって異なります。マニュアルを参照してください。

于 2013-02-07T14:48:55.500 に答える
1

Alex Warth の Worlds (論文の第 4 章) を実装してみてください。これにより、新しいワールドを「発生」させ、その中で計算を実行し、子ワールドの変更を親ワールドに定期的にコミットするか、中止して親の状態にロールバックすることができます。これは無限の取り消しのようなものですが、取り消しの複数の世界/チェーンを生み出すことができます。

于 2013-02-08T13:54:30.093 に答える