본문 바로가기

Front/JavaScript

커링 함수란 무엇일까?

함수형 프로그래밍을 공부하면서 커링 함수에 대한 내용을 많이 접했다.

커링 함수는 인자를 단 하나만 가지는 함수를 만드는 방법에 대한 내용이 담겨있다.

 

커링 함수라는 방법 자체는 대단한 것이 아니다.

함수에 함수를 중첩하는 방식으로 표현하는 것이다.

하지만 가독성 측면에서 어마무시한 리턴이 있다.

 

메소드 체이닝, 람다식 등

다양한 가독성 높은 표현 방식이 단 하나의 메소드만 있는 경우를 가정한다.

커링 함수는 그런 표현 방식을 지원한다.

 

f(a, b, c) => f(a)(b)(c)

 

인자가 여럿 있는 함수를, 하나의 인자를 가진 여럿 함수로 나누는 것.

그런 표현 방식을 가진 함수를 커링 함수라고 한다.

 


 

정말로 가독성이 높을까?

적어도 나는 다음과 같은 표현 방식을 보고 정말 읽기 편하다고 생각했다.

 

getSomething(list, iterator, memo) => get("name")

 

앞선 표현을 보면, 뭔가를 얻기 위한 것인데 정확하게 알기 위해서는 내용을 다 살펴봐야 한다.

하지만, 뒤이은 표현을 보면 겟 네임! => 이름을 얻기 위한 것이라고 명확하게 알 수 있다.

이런 식으로 얻고자 하는 값을 단 하나만 표현하면 가독성이 높아진다.

 

커링 함수의 개념 자체는 핵심 정보를 제외하고는 안으로 숨기는 것.

구현은 함수에 함수를 내포하는 방식으로.

이 정도만 알면 개념 자체는 충분히 알았다고 본다.