Ответ 1
Предположим, что у вас есть emacs, и выбрали SLIME из
CVS и установил его. Это должно быть легко с любым дистрибутивом Linux; apt-get install emacs slime
делает это для меня. (Вы также должны установить SBCL, лучшую реализацию Common Lisp.)
SLIME из коробки больше не работает, поэтому ему нужно
конфигурации. Конфигурирование emacs выполняется в вашем файле ~/.emacs
.
Посетите этот файл (C-x C-f ~/.emacs)
. У меня есть что-то вроде этого,
который загружает множество положительных героев:
(eval-after-load "slime"
'(progn
(setq slime-lisp-implementations
'((sbcl ("/usr/bin/sbcl"))
(ecl ("/usr/bin/ecl"))
(clisp ("/usr/bin/clisp"))))
(slime-setup '(
slime-asdf
slime-autodoc
slime-editing-commands
slime-fancy-inspector
slime-fontifying-fu
slime-fuzzy
slime-indentation
slime-mdot-fu
slime-package-fu
slime-references
slime-repl
slime-sbcl-exts
slime-scratch
slime-xref-browser
))
(slime-autodoc-mode)
(setq slime-complete-symbol*-fancy t)
(setq slime-complete-symbol-function
'slime-fuzzy-complete-symbol)))
(require 'slime)
Если у вас нет SLIME, установленного в вашем "каталоге сайта", вы будете также хочу добавить это перед этими строками:
(add-to-list 'load-path "~/elisp/slime/")
(add-to-list 'load-path "~/elisp/slime/contrib")
(Конечно, измените эти пути в нужное место.)
Ключевой частью является установка слизи, она загружает множество дополнительных модулей, включая REPL. (Я также рассматриваю причудливый отступ, и autodoc essential.)
Во всяком случае, вы можете загрузить это в свои текущие emacs с помощью M-x
eval-buffer
, или поместив точку внутри каждого sexp и нажав
C-M-x
. (Вы также можете указать конец sexp и нажать C-x
C-e
. Существует множество способов оценить Emacs Lisp в Emacs,
но это не очень важно для обучения CL.)
На этом этапе вы можете ввести M-x slime
и перейти к
ваш REPL. Прежде чем это произойдет, ваш Lisp будет загружен, SLIME будет
скажите ему скомпилировать Swank (сторона CL SLIME), и вы увидите, что
бывает. Это происходит только один раз, но в следующий раз SLIME запустит
быстрее.
В REPL вы можете ввести общие команды Lisp и посмотреть результат их оценки. Нажатие TAB для завершения чего-либо вызовет окно возможных завершений; это умное завершение, поэтому набрав что-то вроде "d-b" выведет список, содержащий "Деструктурирующий-связывать". Очень полезно. M-/также будет содержать символы что вы уже набрали где-то внутри Emacs; еще одно прекрасное время заставки. (Это работает повсеместно в Emacs, BTW и называется "динамическим сокращение аббревиатуры ".)
Раньше вы говорили, что REPL был скучным, поэтому откройте реальный файл.
Нажмите C-x C-f test.lisp
. Неудивительно, что это откроет
буфера редактирования test.lisp, который будет создан при первом сохранении
файл (C-x C-s
). Этот файл Lisp знает о SLIME, поэтому ничего
вы можете легко проверить с помощью Lisp. Завершение вкладки,
проверка класса, интерактивное тестирование и т.д. доступны.
В качестве примера введите что-то вроде (+ 1 2)
и нажмите C-x C-e
. Вы
будет видеть результат, который оценивается при запуске Lisp, внизу
окна. Это позволяет вам проверять отдельные выражения по мере ввода
их в файл.
Следующий шаг - написать полную функцию, возможно:
(defun my-1+ (x)
(+ x 1))
Вы можете загрузить эту функцию в текущую Lisp различными способами;
Обычно я использую C-M-x
. Теперь вы можете вернуться в буфер REPL
(C-x b *slime-repl sbcl*
или аналогичный) и введите (my-1+ 42)
и см.
результат 43
напечатан.
Другой способ приведения функций в выполняемый Lisp заключается в компиляции
и загрузите весь файл с помощью C-c C-k
.
В любом случае, основы использования SLIME и Emacs. Есть
очевидно, еще много доступных функций, но это должно дать вам
вкус программирования Lisp с помощью SLIME. Последнее, что я упомянул,
Emacs в значительной степени самодокументирован, поэтому, если вы хотите узнать больше, Emacs
могу помочь тебе. В буфере Lisp вы можете ввести C-h m
, чтобы получить
полный список команд, которые вы можете использовать при редактировании Lisp. Вы можете щелкнуть
ссылки для получения дополнительной информации о каждой функции.
Удачи!