我是新来的函数式语言和Clojure的,所以请多多包涵......如何返回递归函数的输出Clojure中
我试图构建的功能列表,无论是随机参数或常量。构造函数列表的函数已经工作,尽管它不会返回函数本身。我使用println验证了这一点。
(编辑:好吧,这是不正确的工作尚未毕竟)
(编辑:现在,它的工作,但它不能是“EVAL” -ed看来我需要再次出现至少两个。次,以保证至少有两个孩子节点这是可能的)
下面是摘录:?
(def operations (list #(- %1 %2) #(+ %1 %2) #(* %1 %2) #(/ %1 %2)))
(def parameters (list \u \v \w \x \y \z))
(def parameterlistcount 6)
(def paramcount 2)
(def opcount 4)
(defn generate-function
([] (generate-function 2 4 0.5 0.6() parameters))
([pc maxdepth fp pp function-list params]
(if (and (pos? maxdepth) (< (rand) fp))
(let [function-list
(conj function-list
(nth operations
(rand-int (count operations))))]
(recur pc (dec maxdepth) fp pp function-list params))
(if (and (< (rand) pp) (pos? pc))
(let [ params (pop parameters)
function-list
(conj function-list
(nth params
(rand-int (count params))))]
(if (contains? (set operations) (last function-list))
(recur (dec pc) maxdepth fp pp function-list params)
nil))
(let [function-list
(conj function-list
(rand-int 100))]
(if (or (pos? maxdepth) (pos? pc))
(if (contains? (set operations) (last function-list))
(recur pc maxdepth fp pp function-list params)
nil)
function-list))))))
任何帮助将不胜感激,谢谢!
即时感谢你给我的建议,但我想我应该让你们知道我的意图。 我的目标是创建一个函数,在基因编程问题中用作群体。 @Michal - 我不明白我怎么能(评估)这个... @Michiel - 我明白了。 – Silanglaya 2010-05-11 02:01:44