(번역)자바스크립트 함수 합성, 뭐가 그렇게 대단할까?

Jung Han
12 min readApr 18, 2022

원문: https://jrsinclair.com/articles/2022/javascript-function-composition-whats-the-big-deal/

종종 사람들은 함수 합성이 일종의 신성한 진리처럼 말합니다. 향을 피우고 거룩하게 묵상해야하는 원리처럼 느껴지기도 합니다. 그러나, 함수 합성은 그렇게 복잡하지 않습니다. 아마 당신도 함수 합성에 대해 깨닫든, 깨닫지 못하든 항상 사용할 것입니다. 왜 함수형 프로그래머들은 함수 합성에 대해 열광할까요? 뭐가 그렇게 대단할까요?

함수 합성이 뭘까요?

함수 합성은 두 개의 함수를 하나의 함수로 결합하는 것입니다. 즉, 합성된 함수는 하나의 함수를 호출하고 그 결과를 다른 함수에 전달합니다. 그게 전부입니다. 코드로 나타내보면 아래와 같습니다.

한 가지 까다로운 점이 있다면, 함수에서 함수를 반환한다는 것입니다. 그래서 두 개의 화살표가 나타납니다.

실제로 함수 합성은 어떤 문제를 해결하고 있을까요? 우리가 일종의 댓글 시스템을 만들고 있다고 상상해보겠습니다. 앞으로 만들 댓글 시스템은 이미지와 링크는 허용하지만 오래된 HTML은 허용하지 않습니다. 이를 위해 축소된 마크다운을 만들어 보겠습니다. 이 버전에서 링크는 다음과 같이 작성합니다.

[링크 텍스트는 여기에](http://example.com/example-url)

그리고 이미지는 다음과 같이 작성합니다.

![이미지 alt 텍스트튼 여기에](/link/to/image/location.png)

자, 이제 정규 표현식을 사용해 함수를 작성할 수 있습니다. 먼저 문자열을 가져온 뒤 패턴에 맞춰 적절한 HTML로 변환하겠습니다.

정규식이 처음에는 약간 무서울 수 있지만 문자열을 조작하는데 믿을 수 없을 정도로 강력합니다. MDN에서 자바스크립트 정규식에 대해 공부할 수 있습니다. 그러나, 명확한 느낌을 얻으려면 https://regexr.com를 사용하는 것이 좋습니다.

이미지와 링크를 모두 변환하는 함수를 만들때 우리는 c2()를 사용할 수 있습니다.

비록 이 예시에서 c2()를 사용하는 것은 직접 함수를 일일이 작성하는 것보다 훨씬 짧지는 않지만, c2() 함수를 통해 8글자를 덜 작성할 수 있었습니다.

--

--