我有一个结构,其中第一个元素是一个函数,其余的args到fn.现在每个arg可以反过来成为具有类似charectristic的向量.
[+ 1 2 3 [- 4 3] 5 6 [- 9 8 [+ 5 6]] 4 5]
如何在给定任何此类向量的情况下编写递归fn来计算结果?还有什么方法可以评估它,因为如果向量可以被()替换,结构将是一个有效的clojure形式?
user=> (def d '[+ 1 2 3 [- 4 3] 5 6 [- 9 8 [+ 5 6]] 4 5])
#'user/d
user=> (defn to-list [elt]
#_=> (if (vector? elt) (map to-list elt) elt))
user=> (to-list d)
(+ 1 2 3 (- 4 3) 5 6 (- 9 8 (+ 5 6)) 4 5)
user=> (eval *1)
17
Run Code Online (Sandbox Code Playgroud)