Что именно делает «swank-clojure», и есть ли у нас «swank-SOMETHING_ELSE»?

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

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

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

ДОБАВЛЕН

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


person prosseek    schedule 23.08.2010    source источник


Ответы (4)


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

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

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

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

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

person Community    schedule 23.08.2010
comment
@rkrishnan: Я спросил о прелестях других реализаций Lisp ‹a href = stackoverflow.com/questions/3548169/›. Могу ли я использовать зажим с swank? Если да, то как? - person prosseek; 24.08.2010
comment
Хороший ответ, +1. Обратите внимание, что версия Swank для Clojure также активно развивается, хотя я не знаю, что многие люди работают над ней. Clojure растет, но среда, которую CL создавала на протяжении многих лет, довольно хороша. - person Isaac; 24.08.2010
comment
prosseek: Я добавил комментарий к другому сообщению, на которое вы ссылались. Пожалуйста, посмотрите. Буду рада Вам помочь. Исаак: Спасибо. Да, было бы неплохо, если бы сюда было перенесено больше функций слизи / швабры из апстрима. CL абсолютно потрясающий. Могут быть вещи, которые может быть сложно сделать в swank-clojure, например, трассировка стека и способы прервать / продолжить, проверить локальные переменные в стеке. Может, поможет интеграция с JDI? - person ; 24.08.2010

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

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

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

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

person Isaac    schedule 23.08.2010
comment
@Issac: Я немного сбит с толку: swank-clojure предназначен только для «M-x slime», а не «M-x slime-connect», это правильно? Или swank-clojure 1.2.1 для 'M-x slime-connect' это другое что-то? - person prosseek; 24.08.2010
comment
swank-clojure - это как файл .el (вы этого не хотите: swank-clojure-1.1.0 / = bad), так и файл .clj (который вам нужен версии 1.2.1. Файл clj используется для запуска запускайте swank-сервер с помощью lein. Вы используете M-x slime-connect для подключения к swank-серверу, который вы запустили с lein swank, который использовал swank-clojure (файл clojure) для запуска. - person Isaac; 24.08.2010
comment
slime-connect находится в slime.el, а не swank-clojure.el - person Isaac; 24.08.2010

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

person Terje Norderhaug    schedule 24.08.2010

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

person Pavel Penev    schedule 23.08.2010