我是Clojure的新手,也是一个完整的HTML/Compojure处女.我正在尝试使用Compojure创建HTML的静态页面,使用类似于此的函数:
(defn fake-write-html
[dir args]
(let [file (str dir *file-separator* *index-file*)
my-html (html
(doctype :html4)
[:html
[:head
[:title "Docs and Dirs:"]]
[:body
[:div
[:h2 "A nice title"]]
[:div
[:ul
[:li "One"]
[:li "Two"]]]]])]
(clojure.contrib.duck-streams/spit file my-html)))
Run Code Online (Sandbox Code Playgroud)
该函数只是将HTML写入文件.(这里的args论点无关紧要.只是为了确保示例在我的程序中编译并运行.)
"Programming Clojure"表示对html函数的调用会生成格式化的HTML - 带缩进的多行.我得到的只是预期的doc类型,然后是一行中的所有HTML.HTML Tidy没有发现输出文件内容的任何问题.如果我println在REPL上它也会出现一条线.
是否需要其他东西才能获得格式化输出?
我似乎无法找到一种方法来启动包含contrib库的Clojure REPL.如果我正确理解文档,那么这个命令应该这样做:
C:\clojure-1.1.0>"%ProgramFiles%\Java\jre6\bin\java.exe" -cp clojure.jar:clojure
-contrib.jar clojure.main
Exception in thread "main" java.lang.NoClassDefFoundError: clojure/main
Caused by: java.lang.ClassNotFoundException: clojure.main
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: clojure.main. Program will exit.
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的,它失败了.我确实将clojure-contrib.jar复制到了该C:\clojure-1.1.0文件夹中.
有人可以帮助我做对吗?
更新
感谢Micha?的帖子我注意到我的错误是使用冒号,我不得不使用分号.这有效:
C:\clojure-1.1.0>"%ProgramFiles%\Java\jre6\bin\java.exe" -cp clojure.jar;clojure-contrib.jar clojure.main
Clojure 1.1.0
user=>
Run Code Online (Sandbox Code Playgroud) 因此,在Clojure中试图找出如何做ADT的过程中,我遇到了旧的clojure-contrib,除了它已经被替换之外,它很好.没什么大不了的,只需查看已更换的clojure-contrib的破碎库目录,但对于我的生活,我无法找到defadt在新的clojure-contrib分解库中迁移的位置.
那么它迁移到哪里了?
我一直在寻找http://dev.clojure.org/display/doc/Clojure+Contrib+Libraries,但无法弄明白.
奖励积分,如果你能给我一个字符串,alembic.still/distill让它为我插上它.
我想看到当前命名空间中定义的所有函数.我可以在REPL中调用一个可以回答这个问题的函数吗?
看到这是怎么回事,我有点困难.如何在不编写任何JS的情况下将其转换为JS(一切都在Clojure或CS中).
有人可以给出一个简单的例子,说明编译器如何将简单的东西转换为javascript.也许(def x"foo")或(defn [x](+ xx))?
https://github.com/clojure/clojure-contrib Clojure中的此链接要求使用Monolithic Contrib带clojure 1.3.从哪里可以得到罐子Monolithic Contrib或罐子是一样的clojure-contrib?
我正在编写一个内部使用的clojure应用程序,我希望配置文件也在clojure中.我已经定义了一些宏来使编写配置文件更容易,但是当我尝试从配置文件中评估数据时,它无法找到我的宏.然而,这在REPL中工作正常.例如,我正在使用
(load-string "/path/to/config")
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: defcmd in this context, compiling:(null:1)
at clojure.lang.Compiler.analyze(Compiler.java:6235)
at clojure.lang.Compiler.analyze(Compiler.java:6177)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3452)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6411)
at clojure.lang.Compiler.analyze(Compiler.java:6216)
at clojure.lang.Compiler.analyze(Compiler.java:6177)
at clojure.lang.Compiler.eval(Compiler.java:6469)
at clojure.lang.Compiler.load(Compiler.java:6902)
at clojure.lang.Compiler.load(Compiler.java:6872)
at clojure.core$load_reader.invoke(core.clj:3625)
at clojure.core$load_string.invoke(core.clj:3635)
at serverStats.core$load_config.invoke(core.clj:67)
at serverStats.core$_main.doInvoke(core.clj:78)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.Var.invoke(Var.java:397)
at user$eval109.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:6465)
at clojure.lang.Compiler.eval(Compiler.java:6455)
at clojure.lang.Compiler.eval(Compiler.java:6431)
at clojure.core$eval.invoke(core.clj:2795)
at clojure.main$eval_opt.invoke(main.clj:296)
at clojure.main$initialize.invoke(main.clj:315)
at clojure.main$null_opt.invoke(main.clj:348)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:405)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个输入两个长度为n的向量的函数,
即[:a:b:c:d:e:f] [1 2 3 4 5 6].输出一个长度为2n的向量
[:a 1:b 2:c 3:d 4:e 5:f 6].
但是,如果输入的第二个向量与n的长度不匹配,它将循环,
即[:a:b:c:d:e:f] [1 2 3]
输出:[:a 1:b 2:c 3:d 1:e 2:f 3].
(defn Swanson [x y] (vec (flatten (interleave x (repeat (count x) y)))))
Run Code Online (Sandbox Code Playgroud)
此外,该函数也可以取[xy min max n],其中x和y是向量,min是开始交织的索引,max是结束交织的索引,n是交织的步长.
我希望从矢量中挑选出随机(即伪随机)元素.该函数将有一个输入,称之为r,它将选择要选择的元素数.此外,称为v的向量也必须是输入.这是我从未尝试过的,也不知道从哪里开始.
进入构造的假设将是r小于v中的元素数量.从v中选择的重复元素也不是问题.要明确的是,元素将是严格的数字,实际上它们将是浮点数,我希望在选择时保留该结构.
我尝试了一些类似的东西
(take 2 (iterate rand-nth [2 3 4 5 6 7]))
Run Code Online (Sandbox Code Playgroud)
但是从列表中返回向量和一个随机元素,即
([2 3 4 5 6 7] 7)
Run Code Online (Sandbox Code Playgroud)
来自java的一些类似帖子包括:如何在main中的所有声明对象中只选择一次该数组中的随机元素?
clojure ×10
clojure-contrib ×10
compojure ×1
html ×1
java ×1
javascript ×1
lisp ×1
test-is ×1
testing ×1