Есть какой-нибудь способ сохранить состояние REPL Common Lisp или Scheme? - PullRequest
6 голосов
/ 18 октября 2010

Есть ли способ сохранить состояние REPL Common Lisp или Scheme?

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 октября 2010

Ваша реализация должна поддерживать это.Например, SBCL имеет sb-ext: save-lisp-and-die с двумя оговорками:

  • Стек разматывается

  • После этого вы не сможете продолжить (очевидно).

2 голосов
/ 18 октября 2010

Большинство реализаций Scheme компилируются либо в C, либо в какой-либо другой промежуточный формат, поэтому я не знаю ни одного, который бы предусматривал сохранение текущего состояния изображения.Однако большинство из них будет компилировать двоичные файлы, поэтому, если вы действительно так и прочитали руководство по реализации.

Common Lisp, с другой стороны, обычно предоставляет это способом, определяемым реализацией.SBCL имеет ранее упомянутую функцию save-lisp-and-die , а CCL имеет save-application .Это только два Лиспа, которые я использую, поэтому, если вы используете другую реализацию, обязательно ознакомьтесь с документацией.

Если вы хотите узнать, как это сделать, вот один для SBCL.Для CCL, посмотрите пример Apple Current Converter .На этом учебное пособие заканчивается примерами шагов по сохранению полученного пакета приложения.

Редактировать: вот еще один, более простой пример для SBCL.

2 голосов
/ 18 октября 2010

Это зависит от реализации, однако обычно возможно сохранить изображение. Однако обратите внимание, что некоторые вещи, которые относятся к внешним ресурсам, могут не сохраняться - например, состояние потоков, связанных с файлами, или состояние выполнения в потоках (хотя, как мне кажется, существуют некоторые реализации схемы, которые допускают сохранение продолжений). Это не часть самого языка.

...