는 세 개의 인수에 대응 1, 2의 기능과 아래 3가 있다고 가정 :혼합 arity 함수의 체인을 평가하고 필요할 경우 부분 함수를 반환 할 수 있습니까?
(defn I [x] x)
(defn K [x y] x)
(defn S [x y z] (x z (y z)))
Clojure에서이 평가하는 평가 기능이나 관용구가 있습니까 :
(I K S I I) as (I (K (S (I (I)))))
이 인수에 대응 2의 parital 기능을 반환을?
위의 간단한 함수 정의를 사용하여 부분 결과를 반환 할 수있는 여러 가지 기능으로 확장 할 수있는 매크로를 만드는 것이 좋습니다. 이 작업을 수행하기 위해 이미 내장 된 또는 관용적 인 방법이있는 경우 매크로를 작성하고 싶지 않습니다.
(defn I
([x] I x)
([x & more] (apply (I x) more)))
(defn K
([x] (partial K x))
([x y] x)
([x y & more] (apply (K x y) more)))
(defn S
([x] (partial S x))
([x y] (partial S x y))
([x y z] (x z (y z)))
([x y z & more] (apply (S x y z) more)))
방금 찾은이 * 당신을 위해 완벽 할 수도 있고, 다른 도움이되지 않는다면 적어도 도움이 될 것이라고 생각했습니다. http : //alfredodinapoli.wordpress.com/2011/03/16/a-bit-of -clojure-magic-and-order-functions-are-served/ –