고차함수

안정태·2021년 3월 17일
0

Study

목록 보기
1/33

MapReduce Model

MapReduce란 대용량의 데이터를 처리하기 위한 분산프로그래밍 모델로 타고난 병행성을 내포하고 있다.

  • Map단계와 Reduce단계로 처리과정을 나눠서 작업
    Map : 흩어져있는 Data를 key, value형태로 연관성 있는 데이터로 묶는 작업
    Reduce : Map화한 작업 중 중복데이터 제거, 원하는 데이터 추출 작업

js closure vs curry

- closur : 함수와 함수가 선언된 어휘적 환경의 조합으로 지역변수, 외부함수의 변수, 전역변수의 접근이 전부 가능하다.

function init() {
  var name = "Mozilla"; // name은 init에 의해 생성된 지역 변수이다.
  function displayName() { // displayName() 은 내부 함수이며, 클로저다.
    alert(name); // 부모 함수에서 선언된 변수를 사용한다.
  }
  displayName();
}
init();

function makeAdder(x) {
  var y = 1;
  return function(z) {
    y = 100;
    return x + y + z;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);
//클로저에 x와 y의 환경이 저장됨

console.log(add5(2));  // 107 (x:5 + y:100 + z:2)
console.log(add10(2)); // 112 (x:10 + y:100 + z:2)
//함수 실행 시 클로저에 저장된 x, y값에 접근하여 값을 계산

위 코드를 보면 add5변수에는 makeAdder함수의 x값에 5가 할당된 체로 함수 사용이 가능하고
add10변수에는 makeAdder함수의 x값에 10이 할당된 체로 함수 사용이 가능하다

- curry : 여러 개의 인자를 가진 함수를 호출 할 경우, 파라미터의 수보다 적은 수의 파라미터를 인자로 받으면 누락된 파라미터를 인자로 받는 기법을 말한다.

var greetDeeplyCurried = function(greeting) {
  return function(separator) {
    return function(emphasis) {
      return function(name) {
        console.log(greeting + separator + name + emphasis);
      };
    };
  };
};

var greetAwkwardly = greetDeeplyCurried("Hello")("...")("?");
greetAwkwardly("Heidi")(); //"Hello...Heidi?"
greetAwkwardly("Eddie"); //"Hello...Eddie?"

위 코드에서 greetAwkwardly() 함수가 Currying함수 이다. Currying은 어떤 함수를 호출할 때 대부분의 매개 변수가 항상 비슷할 때 유용하게 쓸 수 있다.

js imperative vs declarative

절차형(imperative)

//imperative
function double (arr) { 
  let results = [];
  for (let i = 0; i < arr.length; i++){ 
    results.push(arr[i] * 2) 
  } 
  return results 
}

'어떻게'하는지를 알려주는 프로그래밍 방식이다.

선언형(declarative)

function double (arr) { 
  return arr.map((item) => item * 2) 
}

말 그대로 내가 원하는걸 '선언'하는 프로그래밍 방식이다.

javascript function composition

함수 컴포지션(function composition)은 함수를 조합 한다는 뜻이다. 간단히 말하면 함수의 인자로 함수를 받는다고 보면 된다.

profile
코딩하는 펭귄

0개의 댓글

관련 채용 정보