3
내가 다른 함수를 반환하는 기능을 가지고, 죄수 당시 평가는-fn을 : 그에서Clojure 함수는 동일한 인라인 코드와 다르게 동작합니까?
(defn cons-then-eval-fn [x]
(fn [& e] (cons x (eval e))))
, 내가 하나를 사용하여 단점 - 다음 - 평가 - fn을가, 다른 일을이 개념의 두 인스턴스를 정의 일부 인수가
(def zero-a (cons-then-eval-fn 0))
(def zero-b (fn [& e] (cons 0 (eval e))))
,이 두 가지 기능은 (내가 기대하는 것처럼) 동일하게 작동 : 인라인 코드로하지만, 같은 일
(zero-a) => (0)
(zero-b) => (0)
(zero-a identity []) => (0)
(zero-b identity []) => (0)
그러나 살전와 나는 다른 행동을 보았습니다.
(zero-b zero-b identity []) => (0 0)
(zero-a zero-a identity []) =>
IllegalArgumentException No matching ctor found
아무도 이런 일이 일어나는 이유를 이해할 수 있도록 도와 줄 수 있습니까?