2010-11-28 27 views
0

我已在从煤泥REPL以下(没有发现clojure.contib功能):clojure.contrib煤泥和劣势,LISP程序问题

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以下时(但在这里一切都被发现OK):

[email protected]~/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库,但是“M-X 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:但是,如果我不使用这样的错误信息在一个目录中启动了“lein swank”之后,MX slime-connect(即使从“MX slime-connect”开始也没有在REPL中找到clojure-contrib库(虽然它们是由leiningen作为依赖项下载的))。

回答

1

在我看来,我用错误的方式“规定”在REPL库(由于我使用Clojure的经验不足);使用语法如时:

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

(如果使用“M-X泥”的非斯旺克REPL或“M-X煤泥连接”为一款优雅的服务器无论)所有的库被发现的确定。所以这完全是我的错误(我在这个计算器的回答中发现了我的错误提示:Why do I get an error when I run (use 'clojure.contrib.repl-utils)?

1

这条线:

(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 project以下部分:

  • 煤泥
  • 嵌入
  • 斯旺克,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 
+0

谢谢;我不确定这行是从哪里来的,就像在我的.emacs中没有任何相似之处。我已经安装了所有使用ELPA(不知道这是否相关)。 – aeter 2010-11-28 20:09:13