我正在尝试require clojure.algo.monads,我有点搞不懂clojure导入/要求/使用
; at lein...
:main monads.core/-main
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/algo.monads "0.1.5"]])安装deps: lein deps
和这个简单的代码来测试
(ns monads.core
(require clojure.algo.monads))
(defn -main [& args]
(clojure.algo.monads)
(println "Hello, World!"))莱茵跑
Exception in thread "main" java.lang.ClassNotFoundException: clojure.algo.monads, compiling:(monads/core.clj:6:3)
at clojure.lang.Compiler.analyze(Compiler.java:6464)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3665)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6646)
...我做错什么了吗?
发布于 2015-05-09 07:12:41
您的(clojure.algo.monads)函数中的表达式-main被认为是对clojure.algo.monads的调用,它应该是一个特殊的形式、一个宏或一个函数。但是,clojure.algo.monads是一个命名空间。没有对应于它的Java类文件。这导致了ClassNotFoundException。
我建议您需要clojure.algo.monads命名空间,并且只引用您想要使用的有限的函数或宏。下面是一个例子。
user> (require '[clojure.algo.monads :refer [domonad maybe-m]])
nil
user> (defn f
[x]
(domonad maybe-m
[a x
b (inc x)]
(* a b)))
#'user/f
user> (f 3)
12
user> (f nil)
nilhttps://stackoverflow.com/questions/30135692
复制相似问题