커리드 함수(curried function)는 인자를 여러 개 받는 함수를 한 번에 받지 않고 차례대로 받는 기법입니다. 클로저에서는 이 기법을 활용하여 함수를 조합하고 재활용할 수 있습니다.
커리드 함수란 무엇인가요?
커리드 함수는 다양한 방식으로 정의될 수 있지만, 대부분의 경우 여러 개의 인자를 받는 함수를 인자를 하나씩 받는 여러 개의 함수로 분해하는 것으로 이해할 수 있습니다. 이렇게 분해된 각각의 함수는 다음 인자를 받아서 결과를 반환하거나 새로운 함수를 반환합니다.
예를 들어, (f a b c)
라는 함수를 커리드하면 (f a)
가 호출되고 그 결과는 다시 함수 (f a b)
가 호출되는 식입니다.
클로저에서의 커리드 함수 활용
클로저에서는 fn
키워드를 사용하여 익명 함수를 정의할 수 있습니다. 이를 활용하여 커리드 함수를 정의하고 활용할 수 있습니다.
예를 들어, 다음과 같이 add
함수를 커리드하고 활용할 수 있습니다.
(defn add
[x]
(fn [y] (+ x y)))
(def add2 (add 2))
(def add5 (add 5))
(println (add2 3)) ; 5
(println (add5 3)) ; 8
위 예제에서 add
함수는 첫 번째 인자를 받아들이는 함수를 반환하는 형태로 정의됩니다. add2
와 add5
는 각각 add
함수를 호출하여 새로운 함수를 정의하는 예시입니다.
이러한 방식으로 클로저에서는 함수를 조합하여 재활용하는 것이 가능합니다.
결론
클로저에서 커리드 함수는 함수형 프로그래밍 스타일을 따르며, 함수를 모듈화하고 재활용하는 데 유용한 기법입니다. 이를 통해 코드의 가독성을 높이고 유지보수성을 향상시킬 수 있습니다.
커리드 함수는 클로저에서 함수형 프로그래밍을 지원하는 강력한 도구 중 하나이므로, 적극적으로 활용해보시기를 권장합니다.
참고 문헌: Clojure 커링 함수, 프로그래밍 언어 클로저