본문 바로가기

JS

함수형 프로그래밍 (2) - 일급 함수

일급 함수 (First-Class Function)

일급 함수는 함수가 다른 데이터 타입과 동일하게 취급되는 것을 의미

즉, 함수가 변수에 할당될 수 있고, 다른 함수의 인자로 전달되거나 반환될 수 있으며, 데이터 구조에 저장될 수 있음

// 함수는 변수에 할당이 가능
const add = function(a, b) {
    return a + b;
};

// 함수는 다른 함수의 인자로 전달 가능
function execute(func, x, y) {
    return func(x, y);
}
console.log(execute(add, 2, 3)); // 5

// 함수는 다른 함수의 반환 값으로 사용 가능 : 커링
function createAdder(x) {
    return function(y) {
        return x + y;
    };
}
const add5 = createAdder(5);
console.log(add5(2)); // 7

// 데이터 구조에 저장 가능
const operations = {
    add: function(a, b) {
        return a + b;
    },
    subtract: function(a, b) {
        return a - b;
    }
};
console.log(operations.add(3, 4)); // 7
console.log(operations.subtract(10, 5)); // 5

 

일급함수의 예시 : 커링, 고차함수

 

커링

 

커링 : 함수의 인자를 분리하여 여러 단계에 걸쳐 적용할 수 있음

function add(a) {
    return function(b) {
        return a + b;
    };
}

const add5 = add(5);
console.log(add5(3)); // 8

 

장단점은 일급함수의 장단점과 같다 : 클로저의 장단점 부분

https://alex963.tistory.com/16

 

함수형 프로그래밍 (1) - 순수함수

함수형 프로그래밍함수형 프로그래밍은 프로그래밍 패러다임 중 하나로, 순수 함수와 불변성을 강조하며, 프로그램의 상태 변경을 최소화하는 것이 목표함수형 프로그래밍은 수학적 함수의 개

alex963.tistory.com

 

고차 함수 (Higher-Order Function)

고차 함수는 하나 이상의 함수를 인자로 받거나, 함수를 반환하는 함수를 의미

  • 하나 이상의 함수를 인자로 받는 경우 : map, filter, reduce 등의 자바스크립트 대표 고차함수
    • 주로 iteration을 처리하는데 자주사용됨
  • 함수를 반환하는 함수
// 함수를 반환하는 함수
function createMultiplier(multiplier) {
    return function(x) {
        return x * multiplier;
    };
}

const double = createMultiplier(2);
console.log(double(3)); // 6