【发布时间】:2012-04-03 08:37:50
【问题描述】:
我在 Clojure 中编写了一个可以解析 XML 的简单函数:
(defn filter-tags [xml & selectors]
(if (and (seq selectors) (seq xml))
(recur
(->>
xml
(filter #(= (first selectors) (:tag %)))
(map :content)
flatten)
(rest selectors))
xml))
(defn search-twitter [query]
(->
(clojure.xml/parse (str "http://search.twitter.com/search.atom?q=" query))
:content
(filter-tags :entry :title)))
(first (search-twitter "something")))
它适用于递归......但很奇怪,当我尝试进行“普通”递归时,显式调用过滤器标签,它不起作用...... 有人可以解释一下吗?
【问题讨论】:
-
定义“不起作用” - 没有输出或堆栈跟踪崩溃?
-
它返回 nil,我记得很清楚(我使用 Clojure 1.2)
标签: recursion clojure tail-recursion