프로토타입을 활용하는 함수형 프로그래밍 기법

프로토타입은 객체지향 프로그래밍에서 일반적으로 사용되는 개념입니다. 하지만 프로토타입을 활용한 함수형 프로그래밍은 강력한 기법입니다. 이 기법을 사용하면 함수를 재사용하고 조합하여 더 간결하고 유연한 코드를 작성할 수 있습니다.

프로토타입 기반 객체지향 프로그래밍

자바스크립트는 프로토타입 기반 객체지향 프로그래밍을 지원합니다. 이는 객체간에 프로토타입 체인을 통해 속성과 메서드를 상속할 수 있다는 것을 의미합니다. 함수형 프로그래밍에서는 이러한 프로토타입 체인을 이용하여 함수를 재사용하고 조합합니다.

예를 들어, 다음과 같은 함수를 생각해보겠습니다.

function add(x, y) {
  return x + y;
}

위의 add 함수는 단순히 두 수를 더해서 결과를 반환하는 함수입니다. 이 함수를 프로토타입으로 사용하여 다른 함수를 만들 수 있습니다.

function multiplyByTwo(x) {
  return x * 2;
}

multiplyByTwo.__proto__ = add;

console.log(multiplyByTwo(4)); // 8
console.log(multiplyByTwo(6)); // 12

multiplyByTwo 함수의 __proto__ 프로퍼티에 add 함수를 할당함으로써, multiplyByTwo 함수는 add 함수의 기능을 상속받게 됩니다. 이를 통해 multiplyByTwo 함수는 두 수를 더하는 동작을 수행하면서 간단한 곱셈 연산을 함께 처리할 수 있습니다.

함수 재사용과 조합

프로토타입 기반 객체지향 프로그래밍을 활용하면 여러 함수를 조합하여 새로운 함수를 생성할 수 있습니다. 이를 통해 코드를 재사용하고 고차함수를 만들 수 있습니다.

예를 들어, 다음과 같은 세 개의 함수가 있다고 가정해봅시다.

function add(x, y) {
  return x + y;
}

function multiply(x, y) {
  return x * y;
}

function subtract(x, y) {
  return x - y;
}

이제 이 함수들을 조합하여 새로운 함수를 만들어보겠습니다.

function calculate(x, y, operation) {
  return operation(x, y);
}

console.log(calculate(5, 2, add)); // 7
console.log(calculate(5, 2, multiply)); // 10
console.log(calculate(5, 2, subtract)); // 3

calculate 함수는 두 수와 연산 함수를 받아 해당 연산을 수행한 결과를 반환합니다. 이를 통해 간단하게 함수를 재사용하고 조합하여 다양한 계산을 수행할 수 있습니다.

결론

프로토타입을 활용한 함수형 프로그래밍 기법은 코드의 재사용성과 유연성을 높여줍니다. 기본 함수를 프로토타입으로 사용하여 다양한 함수를 조합하는 방식은 코드의 중복을 줄이고 가독성을 높일 수 있습니다. 함수형 프로그래밍에 익숙한 개발자라면 프로토타입을 활용한 이러한 기법을 사용해보고 코드의 효율성을 향상시켜보세요!

참고 자료: