[clojure] 클로저에서 커링과 부분 적용의 비교

목차

  1. 커링(Currying)
  2. 부분 적용(Partial Application)
  3. 커링과 부분 적용의 차이
  4. 결론

커링(Currying)

커링은 여러 개의 인수를 가진 함수를 단일 인수를 가진 함수들의 연쇄로 변환하는 프로세스를 말합니다. 클로저에서 커링을 통해 함수를 호출할 때 원래 함수와 같은 인수를 가진 새로운 함수를 반환할 수 있습니다.

예를 들어, 다음과 같이 add 함수를 커링할 수 있습니다.

(defn add [x y] (+ x y))
(def add-curried (partial add 10))

add-curriedadd 함수의 x에 10을 고정시킨 새로운 함수를 생성한 것입니다.

부분 적용(Partial Application)

부분 적용은 여러 개의 인수를 가진 함수에 대해 일부 인수를 고정한 새로운 함수를 생성하는 개념입니다. 클로저에서는 partial 함수를 사용하여 부분 적용을 할 수 있습니다.

예를 들어, 다음은 부분 적용을 사용한 예제입니다.

(def add-curried (partial + 10))

이제 add-curried는 두 번째 인수를 10으로 고정시킨 + 함수의 새로운 인스턴스가 됩니다.

커링과 부분 적용의 차이

커링과 부분 적용은 모두 함수의 재활용성을 높이고, 코드 중복을 줄이며, 코드를 간결하게 만들어주는 장점이 있습니다. 그러나 두 가지 프로세스의 주요 차이점은 다음과 같습니다:

결론

커링과 부분 적용은 둘 다 함수형 프로그래밍에서 유용한 개념이며, 클로저에서 이러한 개념을 적절하게 활용할 수 있습니다. 이러한 프로세스를 이해하고 활용하면 코드를 더욱 간결하게 작성할 수 있고, 유지보수가 쉬운 코드를 작성할 수 있게 됩니다.


참고 자료

  1. 클로저(Clojure) 공식 문서: https://clojure.org/
  2. “Functional Programming in Clojure” - Chas Emerick, Brian Carper, and Christophe Grand