我正在做this锻炼。
这是我的解决方案:
(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的下一个调用。
答案 0 :(得分:1)
我相信您希望函数适用:http://clojuredocs.org/clojure_core/clojure.core/apply
此函数将另一个函数f作为其第一个参数,将列表l作为其第二个参数。然后将函数f应用于参数列表(并且从apply返回返回值)。