2017-02-06 2 views
0

У меня есть следующий код в буфер (файл ~/firsts.lsp):Как запустить буфер lisp в slime и посмотреть его вывод в emacs?

(defun firsts (l) 
    (cond 
    ((null l)()) 
    (T (cons (car (car l)) (firsts (cdr l)))))) 

(firsts '((A B) (C D) (E F))) 

Я хотел бы «запустить» этот сценарий и увидеть следующий вывод (или разумный его вариант):

(A C E) 

Мой буфер показывает этот режим:

(Lisp [COMMON-LISP-USER cmucl] adoc) 

При попытке запустить его, я попытался Cc Ck, который создал буфер слизью сборник, который показал, что файл был «скомпилирован» без ошибок, но я не вижу способа заставить скомпилированный код выполнить или запустить весь скрипт через интерпретатор.

Слизь установлена ​​и работает (это то, что координирует компиляцию). Я знаю, что я могу запускать формы через repl, в форме по форме, но я хотел бы запустить весь скрипт в интерактивном режиме.

Software Environment: Mac OS X 10.12.3 GNU Emacs 25.1.1 Слизь ChangeLog даты 2016-04-19 CMU Common Lisp 21b (21В Unicode), но тот же результат с SBCL 1.3.14

+0

https://common-lisp.net/project/slime/doc/html/SLIME-mode.html#SLIME-mode –

+0

@jenesaisquoi C-c C-b привязан к slime-прерыванию. В руководстве по слизу не упоминается slime-eval-buffer (хотя команда работает с использованием M-x slime-eval-buffer, похоже, не привязывается к ключу). – decuser

+0

@RainerJoswig ссылка на документацию по слизи, но не включает в себя, казалось бы, правильный slime-eval-buffer, ни одна из команд в документе - это то, о чем я просил. Ближайший из них - слизь-эваль-регион, но это не идеально. – decuser

ответ

3

Можно представить различные способы, как совместно использовать редактор исходного текста Lisp и Listener (цикл read-eval-print-loop). Хотя SLIME в целом неплохое, некоторые из них немного неуклюжи.

В этом случае я использую три способа оценить буфер слизи/Emacs:

  • выберите регион, а затем оценить область с помощью SLIME
  • SLIME Eval буфера
  • сохранить буфер, нагрузка буфера или компиляции и нагрузки с использованием SLIME

Обратите внимание, что если вы оцениваете результаты, результаты печатаются в мини-буфере.

Вы также хотите на самом деле напечатать что-то, чтобы вы могли видеть, что происходит.

Компиляция вещей перед загрузкой/выполнением может помочь найти ошибки. Я часто использую это.

Фактический список ключей для буфера показан на control-h m.

Боковые заметки о взаимодействии при оценке буфера

Другой стиль взаимодействия будет кормить каждое выражение в буфер слушатель/Отв, имеют результаты печати там, пока ошибка не происходит, или нет более выражений , Но я не думаю, что SLIME поддерживает это прямо.

Средство IDE LispWorks позволяет вам оценивать буфер, а выход (включая результаты оценки) отображается в соответствующей панели вывода.

Clozure CL IDE позволяет вам оценивать буфер и выражения оцениваются в самом верхнем списке слушателей. Печатается вывод и последний результат.

Смежные вопросы