ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 함수형 프로그래밍
    Java Script/기본 개념 정리 2020. 8. 8. 17:20
    반응형
    • 함수형 프로그래밍
      • 순수 함수를 작성하는 것
      • 숨겨진 입력이나 출력을 최대한 제거하여 코드의 대부분이 입력과 출력의 관계를 기술
      • f(g(x))식의 수학적 표현을 컴퓨터 언어화 했다고 생각하면 편함
      • 함수 중심 프로그래밍이라고 이해하면 편함
      • 파이프
        • 함수를 여러개 이용할 때, 가독성이 좋게끔 도와주는 기법
        • f(g(h(x)))와 같은 표현식을 pipe(f,g,h)와 같이 바꿔줌
    • 순수 함수

      • 파라미터를 주었을 때 데이터의 변화없이 항상 같은 값을 내보내는 함수
      • 동일한 입력에 대해 항상 동일한 출력
      • 범위 밖의 변수에 의존 X
      • 함수가 참조 투명성을 지키고, (숨은 입력과 출력)부작용을 줄인다.(없다.)
    • 불변성 (Immutable)

      • 값이 변경되지 않는 것을 의미함.

      • JS의 원시 타입이 이 불변성을 가지고 있음.

        • Boolean, null, undefined, Number, String, Symbol
      • 즉, 새로운 값을 만들기 위해서는 객체를 다시 생성해야한다.

      • 함수에 이런 의미를 적용시키는 것이 순수 함수 ~> 함수형 프로그래밍 으로 가는 길

      •    // mutable
           const bands = ["Metallica", "Queen"];
           bands.push("Nirvana");
        
           // immutable
           const someBands = ["Metallica", "Queen"];
           const bands = [...someBands, "Nirvana"];
        • 이런 느낌
    • 선언적 패턴 (declearative patter)

      • 알고리즘 명시 X, 우리가 이루고자 하는 것(목표)을 설명 ( 내부적으로는 구현해야함 )

      • 명령적 패턴은 우리가 그것을 이루는 방법(알고리즘)을 설명, 목표 명시 X

      •      const names = ["Han", "Chewbacca", "Luke", "Leia"];
             // 명령형 패턴
             const shortNames = [];
             for (let i = 0; i < names.length; i++) {
                if (names[i].length < 5) {
                   shortNames.push(names[i]);
                }
             }
        
             // 선언적 패턴
             const shortNames = names.filter(name => name.length < 5);
      • 순수 함수, 불변성, 선언적 패턴은 함수형 프로그래밍으로 가는 지름길

    반응형

    댓글

Designed by Tistory.