함수형 프로그래밍, 어디까지 알고 있니? (계속 업데이트 합니다)

Jin·2020년 12월 25일
0

함수 체이닝 이란?

배열등의 흔한 자료구조를 이용해서 다수의 고계연산을 적용하여 원하는 결과를 얻는 방법.

const string = '123';
const numbers = string.split('').map((char) => parseInt(char,10)); 

위에서 map 과 같이 무슨 일을 할지 기술된 함수를 인수로 받는 함수, 연산을 고계 연산이라고 한다.

함수 파이프 라이닝이란?

합성 함수. 이전 함수의 출력값이 다음 함수의 입력값이 된다는 점에서 함수 체이닝과 다르다.

const plus1 = (num) => num + 1;
const plus2 = (num) => num + 2;
const plus3 = (num) => num + 3;
const plus4 = (num) => num + 4;

const fs = [plus1, plus2, plus3, plus4];

const result = fs.reduce((acc, f) => f(acc), 0); // 10  

커링이란?

여러개의 인수를 받는 함수를, 인수를 하나씩 받는 단항함수의 순차열로 바꾸는 것. 커링된 함수는 모든 인수를 받은 후에야 평가가 일어난다. 자바스크립트에서 인수를 주지 않으면 undefined 가 되면서 평가가 일어나는 것과 차이가 있다.

Higher order function 이란?

함수를 인자로 받거나 함수를 반환하는 함수를 말한다.

클로저란?

함수 스코프 내에 정의되어 있지 않은 변수를 자유변수 라고 부른다.
이런 자유변수를 포함하는 함수를 열린함수 라고 부른다.

function makeCounter() {
  let count = 0;
  function push() { // 열린함수
    count++; // 자유변수
    console.log(count);
  }
  return push;
}

위에서 push 를 호출하게 되면, 자유변수(count)에 상위 스코프(makeCounter) 에 기록된 값을 바인딩 하게 된다.
이처럼 자유변수에 값을 결정해서, 더 상위 스코프를 찾을 필요가 없어진 것을
Closure - (열린함수를 닫았다) 라고 표현한다.

재귀적인 사고 방식 이란?

문제를 자기 반복적 문제로 분해하고 그것을 다시 조합하여 해를 구하는 방법을 재귀적 방법이라고 한다. 재귀적인 사고방식이란 문제를 자기 반복적(유사도 가능) 문제의 합으로 바라보는 것이다.

function sum(...args) {
  const argsArr = [...args];
  
  if (argsArr.length === 0) {
    return 0;
  }
 
  return argsArr[0] + sum(...argsArr.slice(1));
}

test('sum', () => {
  expect(sum(1, 2)).toBe(3);
  expect(sum(1, 2, 3)).toBe(6);
  expect(sum(1, 2, 3, 4).toBe(10);
});

CPS 란?

continuation-passing style 의 약자.

함수에 continuation 콜백을 추가적인 인자로 주어서
결과값을 계산한 후, continuation 에 결과값을 담아서 호출하는 형태로
프로그래밍 하는것.(<-> Direct style)

https://en.wikipedia.org/wiki/Continuation-passing_style

first class(일급 시민)이라는 것은 무엇일까?

일급 객체란, 다른 객체들에 일반적으로 적용가능한 연산을 모두 적용할 수 있는 객체.
일반적으로 가능한 연산이란 보통, 함수에 매개변수로 대입하기, 변수에 대입하기, 수정하기
등을 말한다.

제어의 역전이란?

메서드란 무엇인가?

메서드 체이닝이란?

추상화 수준이 높다는 것은 무엇을 의미하는가?

수동 루프를 왜 없애야 하는가?

Value Object 패턴이란 무엇일까?

참조 투명성이란? 무엇일까?

일급

0개의 댓글