6

SBCL、emacs、slime、quicklisp を使用してさまざまなパッケージをインストールしています。

このように hunchentoot アクセプターをインスタンス化して開始します。

CL-USER> (hunchentoot:start (make-instance 'hunchentoot:acceptor :port 4242))
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>

ポート 4242 でブラウザを開いてテストしたところ、正常に動作しました。

次に、それを停止するには、印刷された表現をコピーして、次のようにコマンドを発行します。

CL-USER> (hunchentoot:stop #<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>)
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>

これは、対応する開始によって返される印刷された表現でのみ機能します。

これは私にとって驚くべきことです。おそらくオブジェクト自体を表示できなかったため、印刷された表現は単に返されたテキストであると考えました。そのため、hunchentoot:stop がテキスト文字列を使用してオブジェクトを検索できるのは非常に優れていると思いました。しかし、さらに実験を重ねると、いずれかだけでなく、開始に対応する印刷された表現を使用する必要があることに気付きました。また、印刷された表現の上にマウスを置くと、セグメント全体が強調表示されることにも気付きました。したがって、これはテキストではなく、実際に REPL にあるオブジェクトであり、それを使用できます。

したがって、一方で返されるのは印刷表現であるため、それを見ることができますが、他方では、コピーして REPL に貼り付けることができる実際のオブジェクトです。これは正しいですか?やっているからだと思います。これは私にとってまったく驚くべきことです。

説明や洞察をいただければ幸いです。

4

2 に答える 2

6

これらはいわゆる「プレゼンテーション」です。SLIME ユーザー マニュアルのプレゼンテーションを参照してください。

ドキュメントには、オブジェクトが消えない場合に何が起こるかについても説明されています...

このアイデアは主に BBN (Zdybel, et al., An Information Presentation System, 1981) に由来し、次に Symbolics Lisp Machine と移植可能な Common Lisp Interface Managerに由来します。これは、ウィンドウ システムでの出力中に基礎となるオブジェクトを記録します。これらのプレゼンテーションは、グラフィックおよびテキスト出力で機能し、ユーザー インターフェイスの重要な基盤です。

SLIME はその REPL のアイデアを採用しました。

于 2013-04-03T07:29:04.707 に答える