ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 섹션1. 함수형 프로그래밍 개요 정리
    javascript/인동님 인프런강의 정리 2018. 7. 7. 01:32
    반응형

    이강의 1. https://www.inflearn.com/course-status-2/ 의 내용 정리



    함수형 프로그래밍이란 ?

    성공적인 프로그래밍을 위해 부수 효과 미워하고 조합성강조하는 프로그래밍 패러다임.


    일급함수의 개념과 순수함수의 특성을 이용하여 함수의 조합성을 높여가는 것


    부수효과를 미워 한다는 말은

    순수 함수를 만드는 것인데 순수함수는 들어온 인자가 같으면 항상 동일한 결과를 리턴 하는 함수,

    함수가 받은 인자외에 다른 외부에 상태에 영향을 끼치지 않는 함수,

    리턴 값 외에는 외부와 소통하는 것이 없는 함수.


    함수형 프로그래밍은 순수 함수의 조합으로 프로그래밍을 한다.


    순수함수모듈화 수준을 높이게 되면

    오류는 적고 안정성이 높은 생산성 좋은 성공적인 프로그래밍을 할 수 있다라고 볼 수 있다.


    간단한 순수 함수

    /* 순수 함수 */
    function add(a, b){
        return a+b;
    }
    
    console.log( add(10, 5) ); // 결과 15
    console.log( add(10, 5) ); // 결과 15
    console.log( add(10, 5) ); // 결과 15
    

    순수 함수인 이유는 항상 동일한 인자를 주면 동일한 결과를  리턴 하고, 또 리턴 하는 값 외에 외부에 영향을 주는 부수 효과가 없다.


    순수함수가 아닌 함수

    var c = 10;
    function add2(a, b){
        return a + b + c;
    }
    
    console.log( add2(10, 2) ); // 결과 22
    console.log( add2(10, 3) ); // 결과 23
    console.log( add2(10, 4) ); // 결과 24
    
    var c = 20; // 중간에 c 가 20으로 바뀌면 ? 
    
    console.log( add2(10, 2) ); // 결과 32
    console.log( add2(10, 3) ); // 결과 33
    console.log( add2(10, 4) ); // 결과 34
    

    순수 함수가 아닌 이유는 중간에 c 가 20으로 바뀌는 기점으로 위에 3개의 인자와 아래의 3개의 인자 는 동일 하지만 결과 가 다르게 나오는 것을 알 수 있다.


    부수효과가 있는 함수

    var c = 20;
    function add3(a, b){
        c = b;
        return a + b;
    }
    
    console.log('c:', c); // 결과 c: 20
    console.log( add3(20, 30) ); // 결과 50
    console.log('c:', c); // 결과 c: 30
    

    함수를 한번 실행을 시키면 C 의 상태가 20에서  30으로 바뀐 것을 볼 수 있는데 , 이렇게 리턴 하는 값 외에  다른 방식으로 외부의 상태에 직접 관여를 하고 있고 이런 함수를 부수효과과 있는 함수라고  하고 순수 함수가 아니라고 말한다.


    또 다른 순수 함수가 아닌 형태

    var obj1 =  { val : 10};
    function add4(obj, b){
        obj.val += b;
    }
    
    console.log(obj1.val); //결과 : 10
    add4(obj1, 20);
    console.log(obj1.val);  //결과 : 30
    



    순수함수

    var obj1 = { val : 10 };
    function add5(obj, b){
        return { val : obj.val + b}
    }
    
    console.log(obj1.val); //결과 : 10
    var obj2 = add5(obj1, 20);
    console.log(obj1.val); //결과 : 10
    console.log(obj2.val); //결과 : 30
    

    일급함수 

    1. 함수를 변수에 담을 수 있다.

    2. 함수를 인자로 사용 할 수 있다.


    댓글

Designed by Tistory.