9

関数型プログラミング全般に慣れるためにLISPに戻ることにしました(AIクラス以来使用していません)。そこで、Lisp In A Box(前のクラスで実際に使用したもの)をダウンロードしました。 CLISPとEmacs。

私がそれを実行すると、それは言います:

ポート1617で接続されています。このREPL、兄弟を連れて行ってください。

なに?そこで、Lisp In A BoxのWebページを詳しく調べて、次のことを見つけました。

SLIMEは、ネットワークソケットを介してCommonLisp実装とインターフェイスするEmacsの統合開発環境です。SLIMEに関する多くの情報は、CLikiのSLIMEノードにあります。SLIMEのマニュアルは、PDF形式でオンラインで入手できます。

私はSLIMEが何であるかをある程度理解しています(emacsのある種の拡張ですよね?)しかし、なぜ世界でテキストエディタが独自のサーバーを起動してそれに接続しているのですか?

4

4 に答える 4

11

目的は、Lispが並行して実行されるようにすることです。

Slimeはセッションに接続し、多くの異なるウィンドウ(またはマシンでも)から同じ環境や定義などを使用できます。これは、たとえば、アプリケーションを起動してその場でデバッグできることを意味します。

詳細については、このブログをご覧ください。

于 2008-11-21T16:54:06.077 に答える
10

ソケットはパイプよりも柔軟です。1 つには、SLIME を使用すると、ネットワーク上の Swank サーバーに接続できます。これは、実行時間の長いプロセス (Web サーバーなど) を持つリモート マシンでライブ修正を行うのに非常に役立ちます。これを考えると、パイプとソケットの両方をサポートするような方法で通信を抽象化することによって、別の複雑なレイヤーを追加するのはなぜですか? とにかく、パイプがソケットよりも簡単にプログラムできるわけではありません。

于 2008-11-21T21:01:01.400 に答える
2

さて、Slime は Lisp プロセスを開始して、統合開発環境を提供します。そのため、コードをオンザフライでテストおよびデバッグし、オブジェクトを検査することもできます。異なる Lisp (ちなみに、Slime はClojureMIT Schemeもサポートしています) と OS-es (Slime は Windows でも動作します) 間の移植性を高めるために、ソケットを使用するアーキテクチャが選択されたと思います。また、クロスプラットフォーム開発も可能です。Emacs からターゲット アーキテクチャでソフトウェアをテストできます。

したがって、この決定は素晴らしいと思います。実稼働サーバーにスワンク (Slime バックエンド) を配置するべきではありません。

于 2008-11-22T23:21:04.250 に答える
1

REPL (read-evaluate-print-loop) が並行して実行されるため、エディターからオンザフライでコード スニペットをコンパイルおよびテストできます。「Practical Common Lisp」(Web 上で無料で入手可能) には、これについての説明があり、Lisp を学ぶのに非常に良い本です。

于 2008-11-21T17:38:40.620 に答える