[FP&ES6+] go, pipe, curry - (3)
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✏️ 예제 const fruits = [ { name: '사과', price: 1000, quantity: 1 }, { name: '바나나', price: 2000, quantity: 2 }, { name: '딸기', price: 1500, quantity: 3 }, { name: '레몬', price: 1000, quantity: 4 }, { name: '복숭아', price: 3000, quantity: 5 } ]; const go = (...args) => reduce((a, f) => f(a), args); const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs); con..
2021. 12. 11.
[FP&ES6+] go, pipe, curry - (2)
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ curry const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._); 함수를 값으로 다루면서 받아둔 함수를 원하는 시점(= 원하는 개수의 인자가 들어왔을 때)에 평가시킨다. 함수(f)를 받아 함수 ((a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._))를 리턴한다. 리턴된 함수 ((a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._))가 실행되었을 때 인자가 2개 이상이라면 받아둔 함수를 즉시 실행한다. 인자가 2개 이상이 아니라면 함수 (.....
2021. 12. 10.
[FP&ES6+] go, pipe, curry - (1)
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. *** 코드를 값으로 다루기 => 평가하는 시점을 원하는 대로 다룰 수 있다. ✅ go const go = (...args) => reduce((a, f) => f(a), args) 인자들을 받아 하나의 값으로 축약해 나가는 함수이다. go( 0, a => a + 1, a => a + 10, a => a + 100, console.log ); // output // 111 위와 같이 쓰게 된다면 args는 순서대로 0, f, f, f, f가 들어간다. 따라서 0이 a => a + 1의 인자로 들어가 1이라는 값이 되고 이 값이 a => a + 10의 인자로 들어가 11이라는 값이 되고 또 이 값이 a => a + 100의 인..
2021. 12. 10.