2013-03-11 46 views
1

我在做this鍛鍊。如何在Clojure中打破列表?

這裏是我的解決方案:

(defn infixcal [left op right & expr] 
    (let [r (op left right)] 
    (if (nil? expr) 
     r 
    (infixcal r expr)))) 

當我通過表達38 + 48 - 2/2,我得到ArityException因爲expr在列表'(- 2/2)聚集。

問題是如何將它分解成幾個參數並將它傳遞給函數infixcal的下一個調用。

回答

1

我相信你想要的功能應用:http://clojuredocs.org/clojure_core/clojure.core/apply

這個函數接受另一個函數f作爲第一個參數和列表L作爲其第二。函數f然後應用於參數列表(並且返回值是從apply返回的)。

+0

感謝哥們。直到今天仔細閱讀文檔之前,我沒有提出申請。 – yehe 2013-03-11 11:57:31