2012-04-26 3 views
2

여러 인수 함수를 벡터를 받아들이는 새로운 함수로 결합하는 관용구가 있는지 궁금합니다. 새 함수는 첫 번째 인수에 첫 번째 함수를 적용해야합니다.Clojure에서 one-arg 함수를 다중 인수로 결합하십시오.

여러 상황에서 유용하다고 생각합니다. 예를 들어, 단순한 일차원 함수를 사용하여 점의 x, y 및 z 좌표를 변환 할 수 있습니다.

저는 다음과 같이 스스로 구현할 것입니다.하지만 표준 API에 이미 비슷한 것이 있어야합니다.

(defn vector-comp [& fns] 
    (fn [avect] 
    (vec (map #(%1 %2) fns avect)))) 
+0

'(into [] ...)'대신'(vec ...)'를주의하십시오. – kotarak

+0

사실 Clojure에서는 벡터로 캐스팅하는 것이 일반적으로 필요하지 않습니다. 벡터가 수행하는 대부분의 경우에 시퀀스가 ​​작동합니다. –

답변

1
이를 작성하는

다른 방법 :

(defn vector-comp [& fns] 
    #(map apply fns % (repeat nil))) 

나는 표준 라이브러리에는 기성품 솔루션 (juxt 내가 알고있는 가장 가까운 온다)이 없도록 99 % 확신