我是新來的函數式語言和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