3
私は別の関数を返す関数を持って、短所、そして-EVAL-FN:それから、Clojure関数は同じインラインコードとは異なる動作をしますか?
(defn cons-then-eval-fn [x]
(fn [& e] (cons x (eval e))))
、私は他がやって、この概念の2つのインスタンス、短所、そして-EVAL-FNを使用して1を定義します同じことが、インラインコードで:(私が期待するように)いくつかの引数を指定し
(def zero-a (cons-then-eval-fn 0))
(def zero-b (fn [& e] (cons 0 (eval e))))
、この2つの関数は同じように動作:
(zero-a) => (0)
(zero-b) => (0)
(zero-a identity []) => (0)
(zero-b identity []) => (0)
しかしTHESと私はさまざまな行動を見ています:
(zero-b zero-b identity []) => (0 0)
(zero-a zero-a identity []) =>
IllegalArgumentException No matching ctor found
誰も私がなぜこれが起こるのか理解してもらえますか?