32441
# 問題

動作中のCommon Lispプログラムに対して、slime-
connectを利用し、プログラムに変更を加えました。変更したことを忘れてプログラムを再起動してしまい、変更が失われました。

# 質問

加えた変更をプログラムソースコードとして出力することはできるのでしょうか。

# 環境

SBCL 1.3.2を使っています。

# 補足

そういうときには、dribbleを使うのでしょうか。  
<http://clhs.lisp.se/Body/f_dribbl.htm>  
<https://stackoverflow.com/questions/7424307/can-i-save-source-files-in-clisp>
CC BY-SA 3.0
2017-02-06T15:52:15.280
32434
2017-02-06T22:33:18.587
2017-05-23T12:38:56.083
-1
14586
question
common-lisp sbcl
slime-connectを使ってプログラムを動的に書き換えたあとのプログラムを取り出したい
質問内容とは、全く逆の手順になってしまいますが、

  1. 新規にファイルを用意する
  2. コードを書いては、`slime-eval-defun`、`slime-compile-defun`、`slime-eval-last-expression`等をして式をコンパイル/評価していく  
もしくは、式を書く都度、`slime-eval-buffer`、`slime-compile-file`等でファイル全体をコンパイル/評価していく

  3. 最後に全体を読み込んで確認する

という流れで作業し、でき上がったファイルを取っておくのが定番の流れかと思います。  
リモート上のファイルでもローカルホスト上のファイルでもEmacsの連携機能でコンパイルして読み込ませることは可能です。

質問の意図にできるだけ沿って回答すると、`slime-connect`でつないでその変更点をシリアライズするというのは、イメージベースな使い方に思えます。  
Smalltalk /
Interlispのようにイメージベースで作業して、イメージを保存する(メモリ内容をダンプする)、もしくはファイルにコードをシリアライズして保存する、ということも不可能ではないですが真面目に処理しようと思うと結構大変になると思います。

一応、Common Lispをイメージベースで利用するユーティリティを紹介しておきます。

  * [com.informatimago.common-lisp.lisp.ibcl](http://g000001.cddddr.org/3625830000)
CC BY-SA 3.0
2017-02-06T22:33:18.587
32441
2017-02-06T22:33:18.587
3510
32434
answer