[clojure] 클로저에서 커리드 함수의 적용

커리드 함수(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 함수는 첫 번째 인자를 받아들이는 함수를 반환하는 형태로 정의됩니다. add2add5는 각각 add 함수를 호출하여 새로운 함수를 정의하는 예시입니다.

이러한 방식으로 클로저에서는 함수를 조합하여 재활용하는 것이 가능합니다.

결론

클로저에서 커리드 함수는 함수형 프로그래밍 스타일을 따르며, 함수를 모듈화하고 재활용하는 데 유용한 기법입니다. 이를 통해 코드의 가독성을 높이고 유지보수성을 향상시킬 수 있습니다.

커리드 함수는 클로저에서 함수형 프로그래밍을 지원하는 강력한 도구 중 하나이므로, 적극적으로 활용해보시기를 권장합니다.

참고 문헌: Clojure 커링 함수, 프로그래밍 언어 클로저