Что точно делает swank-clojure, и есть ли у нас swank-SOMETHING_ELSE? - PullRequest
14 голосов
/ 23 августа 2010

Мое поверхностное понимание состоит в том, что «swank-clojure» делает возможным «M-x slime-connect». Я имею в виду, что это дает подключение к серверу clojure что-то вроде 'lein swank'. Правильно ли мое понимание? Если нет, то для чего нужен Суонк?

Тогда есть ли swank-SOMETHING_ELSE для других реализаций, подобных lisp? Например, swank-clisp?

Нужно ли 'swank-clojure' для использования SLIME / Clojure с 'M-x slime'?

ДОБАВЛЕНО

Я нашел эту ссылку довольно полезной.

Ответы [ 4 ]

32 голосов
/ 24 августа 2010

SLIME и swank образуют архитектуру клиент-сервер для запуска и отладки программ lisp. SLIME - это внешний интерфейс emacs, а swank - внутренний. Между ними они создают сетевой сокет и обмениваются данными, отправляя сообщения (S-выражения). Короче говоря, это всего лишь механизм RPC между emacs и реальным бэкэндом lisp.

Тот факт, что слизь и червь разделены, связаны по сети и обмениваются сообщениями rpc, означают, что они могут быть где угодно. Таким образом, слизь может подключиться к удаленному хосту / порту для подключения. Все остальные формы, которые вы видите (lein swank и т. Д.), Делают то же самое. Они начинают подключаться к порту, позволяя удаленно подключать слизь.

swank-clojure - это закрытый порт swank. Первоначально swank-clojure поставлялся с вспомогательным файлом elisp под названием swank-clojure.el. Задача этого файла состояла в том, чтобы включить ручную настройку параметров swank, таких как classpath, параметры jvm и т. Д. Так как другие инструменты, такие как lein, появились позже, swank-clojure.el устарел. Но он все еще живет по адресу: http://github.com/vu3rdd/swank-clojure-extra и предоставляет M-x swank-clojure-project, который позволяет запускать swank в проекте lein.

Следует отметить, что SLIME возникла (и все еще активно разрабатывается) в Common Lisp. Infact, Clojure порт Суонк имеет только подмножество функций, которыми пользуются оригинальные версии SLIME / Суонк. SLIME существует для всех основных вариантов Common Lisp. Это частичный порт для Scheme48. В каталоге contrib есть несколько частичных реализаций.

Если вы знаете, что swank уже работает в порту, используйте slime-connect. Если вы просто хотите использовать слизь в проекте, лучше всего использовать swank-clojure-project и lein swank.

6 голосов
/ 23 августа 2010

swank-clojure.el устарело.Не используйте это.

Вам нужно slime.el и вам нужно иметь swank-clojure "1.2.1" в ваших dev-зависимости в вашем project.clj файле.

Swank - это сервер, к которому вы используете slime для подключения из emacs.Если оно прошло от emacs то, что вы хотите запустить процессом Lisp, который он запускает.

Вы должны использовать M-x slime-connect для подключения к серверу swank после запуска с lein swank.

2 голосов
/ 24 августа 2010

Swank - это серверный аналог для таких клиентов, как emacs SLIME и среда разработки MCLIDE lisp для Macintosh.Swank-серверы существуют для многих реализаций Common Lisp и диалектов Lisp, таких как Clojure и Gambit / схема.

1 голос
/ 23 августа 2010

Насколько я понимаю, slime - это часть emacs (клиент), swank - это общая часть lisp (сервер), swank-clojure - это реализация clojure сервера swank, а не оригинал.

...