2013-06-24 73 views
1

在Clojure中是否可以在let表單中定義遞歸函數,或者是否應該使用letfn?例如,我可以使用let進行以下操作嗎?在表單中定義遞歸函數

(defn blowStackExample [] 
    (letfn [(blowStack [] 
      (blowStack))] 
    (blowStackExample))) 
+0

的[Clojure中的非尾遞歸匿名函數(可能重複的http://計算器。 COM /問題/ 5626641 /非尾遞歸匿名函數合的Clojure) – amalloy

回答

5

你能做到這一點的方式是通過命名fn形式裏面的匿名函數:

(defn blow-stack-example [] 
    (let [blow-stack (fn a [] (a))] 
    (blow-stack))) 

(blow-stack-example)