[FP&ES6+] 즉시 평가와 지연 평가의 비교
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ 즉시 평가와 지연 평가의 중첩 사용 비교 즉시 평가를 사용하는 range, map, filter, take와 지연 평가를 사용하는 L.range, L.map, L.filter, take의 중첩 사용을 비교해 보고자 한다. range, map, filter, take의 중첩 사용 go( range(10), map(n => n + 10), filter(n => n % 2), take(2), console.log ); // output // [11, 13] go문 안에서의 실행 순서는 range, map, filter, take 순이다. 한 단계가 완료되면 다음 순서로 평가된 값을 넘기며 단계별로 실행된다. L.range, L..
2021. 12. 25.
[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.