4

私はLispの初心者で、質問があります。いくつかのコードをREPLで直接(.lispファイルなしで!)作成する場合、インタープリターの作業/状態を保存して、次回復元して作業を続行するにはどうすればよいですか?

(私はECLを使用しています)

ありがとう!そして、私の壊れた英語をお詫びします;)

4

2 に答える 2

6

ECLマニュアルから:

伝統的に、Common Lisp の実装は、実行中の Lisp プロセスからのすべてのデータのダンプをファイルに保存する関数を提供してきました。その結果はLispイメージと呼ばれ、他のバージョン互換の実装に出荷される可能性があります.今日、それが実行されるシステムの制御が少ないため、Lisp実装はメモリイメージをダンプし、後でそれらをロードして実行できるようにするために非常に懸命に作業する必要があります.

ECL は、このプロセスを完全に回避することを選択しました。代わりに、プログラムを構築して出荷するための 5 つの異なる移植可能なモデルを考えています。表 1.1 で説明されているモデルは、ECL が移植可能に生成できるさまざまな種類のファイルを列挙しています。表に記載されている 1 つまたは複数の製品を取得するには、パート III で説明されている低レベル API に頼ることができます。ただし、システム定義ファイルを使用してプロジェクトの構造を記述し、ECL に目的のターゲットをビルドさせることに基づく、より簡単な方法をお勧めします。このアプローチについては、次のセクションで説明します。

(私の強調)それで、あなたはECLで運が悪いようです。ただし、CLISPCCL、およびSBCLはこの機能をサポートしているため、必要に応じて、切り替えがオプションである場合は...それらのいずれかを試してみてください。

于 2011-10-07T11:03:23.423 に答える
1

Dirk が言及しているように、多くの Lisp 実装で画像を保存できます。ただし、これは指定された要件を満たしていますが、コードを画像のみに保持することはお勧めできません。編集が困難または不可能になるためです。関数のソース コードを取得できることはオプションの機能です (存在する場合でも、コメントや書式設定は失われます)。その他の多くの種類の定義は、標準的な方法ではまったく復元できません。

一方、REPL で複雑な設定を行っている場合やコンパイル時間が長い場合は、作業を保存して再開するためだけにイメージを使用しても問題ありません。

(いくつかのシステム、特に Smalltalk は、画像内の編集コードを促進し、これをサポートする編集およびエクスポート機能を備えていますが、標準化された Common Lisp はそうではありません。

于 2011-10-07T20:03:19.577 に答える