함수형 프로그래밍 수업을 들으면서 go 함수와 pipe, reduce함수를 이해하느라 굉장히 애를 먹었는데, 그 과정에서 애를 먹었던 개념이 커링이라는 개념이다. 정말 세상에는 똑똑한 사람들이 많고, 인터넷에 자신들의 지식을 잘 정리해서 공유해주시는 분들이 많다. 이 분들이 작성한 글 덕분에 나도 커링에 대해 조금 알 것 같다.
커링을 이해하는데 아래 두 링크가 큰 도움을 주었다. 꼭 읽어보자!
https://ko.javascript.info/currying-partials
https://sujinlee.me/currying-in-functional-javascript/
결국 커링은 n개의 인자를 받아야 하는 함수를 쪼개서 1개의 인자를 받는 n개의 함수로 쪼개는 것이다.
각각의 함수들은 다음에 실행할 함수를 리턴하고, 리턴된 함수는 다음 인자를 받아 실행되며 또 그 다음에 실행될 함수를 리턴하는 식으로 꼬리에 꼬리를 물면서 실행되어 결국 원하는 결과값을 얻게 된다.
밀린 강의를 들으며 실제로 코드를 씹고 뜯고 맛보고 즐기는 과정을 통해, 점점 함수형 프로그래밍의 매력에 빠지게 되는 나를 발견하게 된다. 함수의 높은 재사용성과 코드가 간결해지는 점이 가장 큰 매력으로 다가왔다. 프로그래밍 패러다임에는 우위가 없지만, 코드의 유지보수성 면에서는 함수형 프로그래밍이 유리하지 않을까? 그래서 협업 시에도 함수형 프로그래밍으로 코드를 작성하면토록 하면 좋을 것 같다는 생각이 들었다.