clojure.contrib с вопросом о слизи и нижней программе - PullRequest
0 голосов
/ 28 ноября 2010

У меня есть следующее из sll repl (функции clojure.contib не найдены):

M-X slime
user=> (:require 'clojure.contrib.string)
nil
user=> (doc clojure.contrib.string/blank?)
java.lang.Exception: Unable to resolve var: clojure.contrib.string/blank? in this context (NO_SOURCE_FILE:10)

И следующее при запуске clojure из консоли (но здесь все в порядке):

adr@~/clojure/cloj-1.2$ java -cp /home/adr/clojure/cloj-1.2/clojure.jar:/home/adr/clojure/cloj-1.2/clojure-contrib.jar -server clojure.main
user=> (:require 'clojure.contrib.string)
nil
user=> (doc clojure.contrib.string/blank?)
-------------------------
clojure.contrib.string/blank?
([s])
  True if s is nil, empty, or contains only whitespace.
nil

В моем .emacs у меня есть следующее:

(setq inferior-lisp-program "java -cp /home/adr/clojure/cloj-1.2/clojure.jar:/home/adr/clojure/cloj-1.2/clojure-contrib.jar -server clojure.main")

Мои банки clojure (1.2) находятся в /home/adr/clojure/cloj-1.2'.

Я новичок в emacs, следую некоторым учебникам.Некоторое время я пытался использовать библиотеку clojure.contrib из Emacs, но «MX slime» не находит clojure.contrib.Пожалуйста, помогите

Редактировать : если это поможет, теперь я увидел, что при использовании слизи MX появляется сообщение:

(progn (load "/home/adr/.emacs.d/elpa/slime-20100404/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.4493" :coding-system "iso-latin-1-unix"))

Clojure 1.2.0
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)

Edit2: Но такого сообщения об ошибке нет, если я использую MX slime-connect после запуска «lein swank» в каталоге (хотя даже начиная с «MX slime-connect», в REPL нет библиотек clojure-contrib (хотя они загружаются leiningen как зависимость)).

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Мне кажется, что я использовал неправильный способ «требовать» библиотек в REPL (из-за моей неопытности с clojure);при использовании синтаксиса, такого как:

user=> (require 'clojure.contrib.string)
nil
user=> (clojure.contrib.string/blank? "asd")
false

все библиотеки найдены в порядке (независимо от того, используется ли «MX slime» для не-swank REPL или «MX slime-connect» для swank-сервера),Так что это была моя ошибка (я нашел подсказки о своей ошибке в этом ответе stackoverflow: Почему я получаю ошибку при запуске (используйте 'clojure.contrib.repl-utils)? )

1 голос
/ 28 ноября 2010

Эта строка:

(progn (load "/home/adr/.emacs.d/elpa/slime-20100404/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.4493" :coding-system "iso-latin-1-unix"))

- это Common Lisp, а не Clojure, но поскольку вы установили inferior-lisp-program на Clojure, slime не может запустить сервер swank.

См. Следующие разделы в проекте swank-clojure :

  • Соединение с SLIME
  • Встраивание
  • swank-clojure.el

Требуемая функциональность, вероятно, есть в swank-clojure.el , но это больше не рекомендуется.

Поскольку вы уже используете ELPA:

add-to-list 'package-archives
         '("technomancy" . "http://repo.technomancy.us/emacs/") t)

M-x package-install ;(slime-repl)
M-x slime-connect
...