小编use*_*437的帖子

从Clojure中的向量构建树

我正在研究我的第一个Clojure计划.我有一些问题想出如何基于如下所示的输入构建树:

["A B" "A C" "C D" "D E" "A F" "F G"]
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

'(A (B) (C (D (E)) (F (G)))
Run Code Online (Sandbox Code Playgroud)

我不知道如何开始这样做.例如,当涉及到命令式编程时,我会使用嵌套循环来查找这种关系是否已经存在,当它不存在时,我会找到父元素并将子元素附加到它.但据我所知,函数式编程将使用另一种方法,我将递归地遍历向量中的所有元素,而不是更改现有的树,我构建了一个新的.

我不确定这是否有效,但我有一个看起来像这样的功能:

(defn build-tree
  [func tree parent child]
  (map (fn [i] (if (seq? i)
                 build-tree
                 (func i parent child))))) 
Run Code Online (Sandbox Code Playgroud)

我确定这个问题来自于我对Clojure和函数式编程的不熟悉,并且希望有人可以解释使用递归和构建这个树的最佳方法.

tree clojure

1
推荐指数
1
解决办法
992
查看次数

标签 统计

clojure ×1

tree ×1