簡體   English   中英

clojure.contrib與slime和inferior-lisp-program問題

[英]clojure.contrib with slime and inferior-lisp-program question

我有史萊姆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的新手,一直在關注一些教程。 有一段時間我一直在嘗試使用Emacs的clojure.contrib庫,但“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)

編輯2:但是如果我在目錄中啟動了“lein swank”后使用MX slime-connect,則沒有這樣的錯誤消息(盡管甚至以“MX slime-connect”開頭,在REPL中找不到clojure-contrib庫(雖然他們被leiningen下載作為依賴))。

這一行:

(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連接
  • 嵌入
  • 斯旺克,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

在我看來,我使用錯誤的方式在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)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM