我完全可以理解为什么Clojure非常适合并发编程.在这方面我也可以看到FP的优势.
但显然,并非我们编写的每行代码都是线程的一部分或需要并发访问.对于代码的那些部分(更简单和连续的代码片段),Java真正错过了Clojure提供的内容是什么?
在Java中真的错过了Multimethods,Dynamic binding,Destructuring bind等功能吗?
我想我的问题也可以被描述为:
我有一堆共享相同页眉和页脚的静态html文件.我想在所有页面上分享这个页眉和页脚.现在我使用以下路由,但它有点难看,我必须照顾所有特殊情况.是否有一个简单的dothis,如PHP的包含功能?
(defroutes my-app
(GET "/"
(html-with-template
"main.header" "index.body" "main.footer" ))
(GET "/*.html"
(html-with-template
"main.header" (str (params :*) ".body") "main.footer" ))
(GET "/*/"
(html-with-template
(str (params :*) "/folder.header")
(str (params :*) "/index.body")
(str (params :*) "/folder.footer")))
(GET "/*"
(or (serve-file (params :*)) :next))
(ANY "*"
(page-not-found)))
我写了3个函数来计算a-element出现在a-list中的次数.我尝试了各种输入并对其进行了分析,但我仍然不知道哪种功能在堆栈使用效率和时间效率方面最佳.请帮帮我.
;; Using an accumulator
(defn count-instances1 [a-list an-element]
(letfn [(count-aux [list-aux acc]
(cond
(empty? list-aux) acc
:else (if (= (first list-aux) an-element)
(count-aux (rest list-aux) (inc acc))
(count-aux (rest list-aux) acc))))]
(count-aux a-list 0)))
;; Normal counting
(defn count-instances2 [a-list an-element]
(cond
(empty? a-list) 0
:else
(if (= (first a-list) an-element )
(+ 1 (count-instances2 (rest a-list) an-element))
(count-instances2 (rest a-list) an-element))))
;; using loop. does this help at all?
(defn count-instances3 [a-list an-element]
(loop [mylist a-list acount 0] …
Run Code Online (Sandbox Code Playgroud) 我已经尝试将clojure-contrib.jar放在我的文件系统的各个地方,我尝试在启动REPL时手动指定类路径,我已经尝试解压缩jar并将clj文件放在类路径上,似乎没什么用.我继续得到这样的东西:
java.io.FileNotFoundException: Could not locate clojure/contrib/str_utils__init.
class or clojure/contrib/str_utils.clj on classpath: (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
当我执行(println (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))
以查看类路径时,它确实包含clojure-contrib:
(#<URL file:/C:/Program%20Files/Java/jre1.6.0_06/lib/clojure-1.0.0.
jar> ... #<URL file:/C:/Program%20Files/Java/jre1.6.0_06/lib/clojure-contrib.jar>)
Run Code Online (Sandbox Code Playgroud)
当我创建自己的.clj文件并将其放在类路径上时,我能够使用或要求它并且可以像我期望的那样访问它的功能.
如果我将.clj文件 - 例如str-utils.clj - 移动到pwd(在类路径上)它可以运行 - 它至少可以找到该文件,尽管由于依赖性它通常无法对它执行任何操作关于埋没在clojure-contrib中的其他功能,它无法找到.
任何想法为什么这不适用于clojure-contrib?
我对文档感到困惑:
\%(\)
由转义括号括起来的模式.*/\%(\)* */\%(*
*E53*
就像\(\)
,但不计算它作为子表达式.这允许使用更多组,并且它更快一点.
有人可以解释差异的原因吗?是因为回溯还是别的什么?
我对Clojure中的列表有点困难我有一个关于过滤器功能的快速问题
假设我有一个由地图组成的列表我的代码是:
(def Person {:name Bob } ) (def Person2 {:name Eric } ) (def Person3 {:name Tim } ) (def mylist (list Person Person2 Person3))
我将如何过滤我的列表,例如:我希望列表减去Person2(意味着减去任何有:name
Eric的地图)
非常感谢大家帮助我.这是我保证的最后一个问题
他们都这么复杂吗?:http://msdn.microsoft.com/en-us/library/ms766497(VS.85).aspx
只需要一些基本的东西来用C生成XML.
我有一个HTML文件,我想抓住文件中的所有链接并使用Vim将其保存到另一个文件中.
我知道正则表达式会是这样的:
:g/href="\v([a-z_/]+)"/
Run Code Online (Sandbox Code Playgroud)
但我不知道从哪里开始.
我正在为当前项目评估复杂对象层次结构模型的一些潜在实现.我想知道是否有一个xpath风格的元语言或类似的东西,这将允许我查询这些对象链接.
此外,我确信有一些非常具体的术语用于我所问的问题 - 我只是不知道.
要求:
我想我可以在这里推出自己的解决方案,但我很好奇,如果比我聪明的人已经想出了什么.
在看到一些答案后,我想我可能需要更多地澄清我的问题.具体来说,此工具将用于遍历作为父对象的不同版本的一组对象.
例如:
[对象1 prop1 ="foo"prop2 ="bar"prop3 ="zoop"]
↓继承上述对象↓
[对象2 prop1 ="foo和某事"prop2 ="bar"prop3 ="zoop"]
↓继承上述对象↓
[对象3 prop1 ="foo和某事"prop2 ="bar"prop3 ="zoop 24"]