2011-02-02 4 views
2

У меня есть emacs с SLIME и SBCL. И я застрял в проблеме, что emacs имеет определение «FORMAT» как format string & объектов для отдыха, поэтому в REPL, когда я пытаюсь оценить что-то вроде (формат t «привет»), я получаю ошибку: Неверно type аргумент: stringp, t.Конфликтующие (?) 'FORMAT' функции emacs и SBCL

В этом случае функция должна быть переопределена? Как я могу заставить emacs использовать функцию, определенную в SBCL?

Угадайте, что это довольно простая задача новичка, но это очень трудно Google для «формат» ключевое слово :)

+5

Скорее всего, вы ошиблись в REPL. Как буфер называется, где вы это пытаетесь? – Svante

+0

Я использую * ielm *, и это, вероятно, неправильно REPL в соответствии с ответом Хорхе. –

ответ

8

Emacs Lisp и Common Lisp (SBCL является реализацией этого) являются два разные языки; это как если бы вы спрашивали, как вызывать Java System.out.println с вашего Emacs Lisp.

Emacs Lisp используется для расширения и настройки поведения или Emacs.

Common Lisp - это язык программирования общего назначения, из которого существует несколько реализаций, одним из которых является SBCL. Это не связано с Emacs или Emacs Lisp (кроме, возможно, исторически и культурно).

SLIME - это инструмент для работы с пробегом Common Lisp изображение изнутри Emacs, вы должны сначала запустить его с M-x slime; после того, как вы запустили SLIME, вы можете отправить формы на свой обычный образ Lisp (SBCL в вашем случае) в буфере *slime-repl sbcl*.

Вы найдете другой буфер с именем *scratch*, где вы можете ввести и оценить Emacs Lisp бланки. Просто помните, что это не имеет ничего общего с Common Lisp.

Но вам нужно знать, что существует расширение Emacs Lisp, которое добавляет многие общие Lisp-конструкции к Emacs Lisp, но это все еще Emacs Lisp, не путайте, если вы что-то читаете об этом.

Да, это может быть запутанным сначала, но не беспокойтесь, это только временное.

Edit: Я хотел бы добавить, что если вы заинтересованы в Common Lisp, вы должны прочитать один или все из следующих книг:

С другой стороны, если вы заинтересованы в exte nding и настройки самого Emacs, вы должны прочитать следующую книгу:

удачи.

+0

Спасибо за такой подробный ответ, Хорхе! Это помогло правильно подойти к моему исследованию проблемы. Также мне интересна CL и изучаю ее с помощью Practical Common Lisp, просто застрял в этой проблеме с окружающей средой. –

+1

Изучение общих Lisp и Emacs + SLIME в то же время иногда может сбивать с толку. Когда я начал изучать Common Lisp, я полностью избегал Emacs; только после того, как я почувствовал себя комфортно с Common Lisp, я начал исследовать, как использовать Emacs и SLIME. Вы можете использовать любой другой редактор, который должным образом обрабатывает отступ Common Lisp и управляет скобкой для вас, а также копирует и вставляет формы из него в REPL. Другой вариант - использовать личную версию LispWorks IDE; http://www.lispworks.com/ это бесплатно и дает вам готовые к использованию среды разработки. –

1

После некоторого расследования я узнал, что скрипт SLIME init.Файл конфигурации emacs был неправильным. Итак, пока я использовал нижний lisp, это был не SBCL. Вот ссылка, объясняющая вопрос: slime-devel list. Итак, я изменил (setq inferior-lisp-program "/some/path/to/sbcl/executable.exe") на (setq inferior-lisp-program "sbcl") в файле конфигурации. И это привело меня к SBCL в его идеальной природе :)