2
什麼是與下面的代碼的問題: 的FUNC表達式獲取包含術語,它包括表達表達...間接遞歸 - Clojure的
(defn term[]
(def mytmp (zip/xml-zip {:tag :term}))
(cond
(= (first(:content(first vecTok))) "(")
(do
(def mytmp (popVecTo mytmp))
(def mytmp (zip/append-child mytmp (expression)))
(def mytmp (popVecTo mytmp)))
:else
(def mytmp (popVecTo mytmp)))
(zip/node mytmp))
(defn expression[]
(def mytmp (zip/xml-zip {:tag :expression}))
(def mytmp (zip/append-child mytmp (term)))
(while (contains? #{"+", "-", "*","/", "&", "|", "<", ">", "="} (first(:content(first vecTok))))
(do
(def mytmp (popVecTo mytmp))
(def mytmp (zip/append-child mytmp (term)))))
(zip/node mytmp))
(def vecTok (vec (:content(first(xml-seq (parse "C:/Users/User/Desktop/forHekronot/BallT.xml"))))))
在文件:
<a><symbol>(</symbol><identifier>dy</identifier><symbol>-</symbol><identifier>dx</identifier><symbol>)</symbol></a>
使用高清是壞主意,請使用我們。 –
投票結束,因爲沒有解釋我能看到的問題。 –
只是我看到的一些問題。 1)你試圖編寫可變的代碼,而不是採取更多功能的方法。 2)你正在使用'(def ...)'來定義頂層var,而不是使用[let](http://clojuredocs.org/clojure_core/clojure.core/let)和[threading宏](http://clojuredocs.org/clojure_core/clojure.core/-%3E)。 3)你似乎在不斷地重新定義'vecTok',這不是慣用的Clojure。我認爲你需要做的是備份,並將xml流視爲序列,並使用'map','filter'和其他序列抽象操作該序列。 – jszakmeister