1

我正在做这个练习。

这是我的解决方案:

(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 的下一个调用。

4

1 回答 1

1

我相信您希望该功能适用​​:http ://clojuredocs.org/clojure_core/clojure.core/apply

这个函数将另一个函数 f 作为它的第一个参数,将一个列表 l 作为它的第二个参数。然后将函数 f 应用于参数列表(并从 apply 返回返回值)。

于 2013-03-11T11:45:50.823 回答