프론트엔드

const L = {}; L.range = function *(l) { let i = -1; while (++i < l) yield i; }; L.map = curry(function *(f, iter) { iter = iter[Symbol.iterator](); let cur; while (!(cur = iter.next()).done) { const a = cur.value; yield f(a); } }); L.filter = curry(function *(f, iter) { iter = iter[Symbol.iterator](); let cur; while (!(cur = iter.next()).done) { const a = cur.value; if (f(a)) yield a; } }; const..
reduce, map, filter, take, reduce 중첩 사용 우선 지금까지 만들어 뒀던 함수들은 다음과 같다. const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._); const range = l => { let i = -1; const res = []; while (++i { const res = []; for (const a of iter) res.push(f(a)); return res; }; const filter = curry((f, iter) => { const res = []; for (..
이터러블 중심 프로그래밍에서의 지연 평가 (Lazy Evaluation) 지연 평가라는 게으른 평가라고도 하지만, 영리한 평가로도 불리며 혹은 제때 계산법이라고도 칭한다. 가장 필요한 때까지 평가를 미루다가 필요한 순간 코드를 평가하면서 값들을 만들어 나가는 기법이다. 배열을 미리 만들어 두는 등 사전에 값을 평가해 준비하는 것이 아니라 reduce와 같이 평가가 필요한 함수를 만났을 때, 배열 안에 있는 값들을 순회하면서 값을 평가하는 것을 최소화하고 연산을 줄이는 것에서 장점이 있다. 장사를 하는 것에 비유하자면, 미리 음식을 다 만들어 놓았을 때 다 판매하지 못하면 시간과 돈을 버리게 되지만, 밀키트나 냉동식품을 주문이 들어왔을 때 조리하면서 장사를 하면 더욱 효율적으로 매상을 높일 수 있는 것과 ..
Take 함수 const take = (l, iter) => { let res = []; for (const a of iter) { res.push(a); if (res.length === l) return res; } return res; }; take 함수는 limit과 iterable 객체를 받아서 limit 개수 만큼 값을 저장하는 함수다. 그래서 range와 함께 5개의 원소만 뽑아내고자 한다면 다음과 같이 작성할 수 있다. const range = l => { let i = -1; let res = []; while (++i < l) { res.push(i); } return res; }; const L = {}; L.range = function *(l) { let i = -1; while ..
턴태
'프론트엔드' 카테고리의 글 목록 (3 Page)