55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
Array.prototype.map
기존구현된 Array.prototype.map reduce filter 와는 다른개념인건가요 ?? 같은동작을 수행하도록 구현했다고 이해하면될까요?? 그렇다면 map filter reduce 라고 칭하는 이유는 왜그런지 궁금합니다 . 만약 그렇다면 함수명을 다르게 써도되는건가요??
- 미해결함수형 프로그래밍과 JavaScript ES6+
일급함수에서 매개변수에 콜백함수를 넣는 경우
일급함수를 매개변수에 콜백함수를 넣는 경우에는 콜백 함수도 일급 함수라고 할수 있나요? const test = (callback) => { callback(10); } test((text) => {console.log(text)});
- 미해결함수형 프로그래밍과 JavaScript ES6+
L함수와 C함수가 잘 정리되지 않아 질문드립니다
여기까지 강의를 들으면서 L,C 함수들을 모두 배우고 나니 정리가 완벽히 되지 않아 질문드립니다. L함수는 모든 검사를 시행하지않고 원하는 결과를 얻을 수 있고, C함수는 병렬적으로 한번에 작업을 한다는 정도로는 이해가 되는데, 그래서 이게 어떤 의미가 있고, 구체적으로 어떤 경우에 사용하며, 언제 사용하면 안되는지 등 정리가 되지 않아 실제로 적용해볼 수 있을지 걱정됩니다. 물론 js 공부가 아직 많이 미흡하기도 하고 여러번 봐야겠지만 혹시 도움을 주실 수 있을지 해서 질문드립니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
추상화되어있다
강의에서 어떻게 추상화되어있는지 알아보겠다고 말씀해주셨는데, 여기서 추상화가 되어있다는게 어떤 뜻으로 말씀하신건지 궁금해요
- 해결됨함수형 프로그래밍과 JavaScript ES6+
함수형 프로그래밍 테스트
안녕하세요. 학습 중 어려움이 있어 질문드립니다. 문제 상황 1 take 함수 코드를 작성하면서 limit 값이 0 일 때도 동작하는 코드를 작성하고 싶어 코드를 아래와 같이 수정했는데요. 아래와 같이 작성하니깐 문제가 발생하더군요. 디버깅을 통해 원인이 두번째 인자로 받은 iter가 기존 코드보다 순회를 한번 더 해 iter를 참조하고 있는 다른 함수에서 부수효과가 발생해서 생긴 원인이드라고요. const take = curry((l, iter) => { let res = []; iter = iter[Symbol.iterator](); return function recur() { let cur; while (!(cur = iter.next()).done) { const e = cur.value; if (e instanceof Promise) { return e .then(e => res.length == l ? res : (res.push(e), recur())) .catch(e => e == nop ? recur() : Promise.reject(e)) } if (res.length == l) return res; res.push(e); } return res; }(); }); 문제 상황 2. 아래 코드의 경우 reduce를 하기 위해 acc 값을 header를 받아오는데 filter의 결과로 nop을 받아와 에러처리가 안되 에러가 발생했습니다. go([0, 1, 2, 3, 4], a => a, L.map(a => Promise.resolve(a * a)), L.filter(a => Promise.resolve(a % 2)), reduce(add), log); const reduce = curry((f, acc, iter) => { if (!iter) return reduce(f, head(iter = acc[Symbol.iterator]()), iter); iter = iter[Symbol.iterator](); return go1(acc, function recur(acc) { let cur; while (!(cur = iter.next()).done) { acc = reduceF(acc, cur.value, f); if (acc instanceof Promise) return acc.then(recur); } return acc; }); });
- 해결됨함수형 프로그래밍과 JavaScript ES6+
for of vs while
안녕하세요. 코드를 작성하면서 실습하는 중입니다. 실습할 때, for of 구문을 이용해서 코드를 작성했는데 이번 take 함수는 의도에 맞게 동작하지 않더라고요. reduce 함수는 for of 구문을 작성해도 잘 작동했는데 이유가 뭘까요? const go1 = (a, f) => a instanceof Promise ? a.then(f) : f(a); const reduce = curry((f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } return go1(acc, function recur(acc) { for (const e of iter) { acc = f(acc, e); if (acc instanceof Promise) return acc.then(recur); } return acc; }); }); const take = curry((l, iter) => { let res = []; return function recur() { // if(e instanceof Promise) return .then(e => {...}) closure에 담긴 iter 상태가 closed로 변경 // for (const e of iter) { // if(e instanceof Promise) return .then(e => {...}) 문을 만나도 iter가 closed가 되지 않음 let cur; while (!(cur = iter.next()).done) { const e = cur.value; if (e instanceof Promise) return e.then(e => { if (res.length == l) return res; res.push(e); return recur(); }) if (res.length == l) return res; res.push(e); } return res; }(); });
- 해결됨함수형 프로그래밍과 JavaScript ES6+
코드블록유무
const go = (...args) => {reduce((a,f)=>f(a),args)} //if (go.value ==100) , go와 pipe의 함성하는 함수들과 초기값 같음. const pipe = (...fs) => (a) => go(a, ...fs) //undefined const go = (...args) => reduce((a,f)=>f(a),args) //100 const pipe = (...fs) => (a) => go(a, ...fs) //100 go함수의 구현을 statement로 했을때와, expression했을때 pipe함수에서 차이가 발생하는데 그 원인를 알고 싶습니다.
- 해결됨함수형 프로그래밍과 JavaScript ES6+
DOM 조작 관련 질문
안녕하세요. 강의 내용과 무관한 내용이지만 돔을 다루기 위해 이벤트 등록은 어떤 방식으로 하시나요. 단순히 web api를 쓰는지 다른 프레임워크를 사용하는지 궁금하네요?
- 해결됨함수형 프로그래밍과 JavaScript ES6+
데이터 생성 로직
안녕하세요. 강의를 들으면서 함수형 프로그래밍이 기존에 있는 데이터를 재가공해서 사용하는데 매우 유용하다고 느꼈습니다. 그런데 제품 등록이나 숙소 등록 같이 서버에 데이터를 전송하기 위해 오브젝트를 생성하는 코드도 함수의 조합 방식으로도 구현하시나요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
arrow function 문법 질문
안녕하세요. 처음본 문법이 있어서 질문드립니다. 강의 3:43에 작성한 filter(a => (console.log(a), f(a))) 이 함수의 볼드 처리된 문법 이름이 뭔가요??
- 미해결함수형 프로그래밍과 JavaScript ES6+
초기값이 없는 경우
현 products의 배열의 값은 각 이터레이터 평가 값으로 { value : {name:"", price:0}, done:false} 를 반환하게 된다고 했을 때 지금 작성 해주신 부분에서 초기 값이 없을 경우, 초기 acc값으로 iter.next().value는 객체가 되는 것으로 보여 지고 있습니다. 그렇다면, 정상적으로 price가 합산된 값으로 평가 되지 않을 것으로 보여지는데요 #1 : 이럴경우는 이게 정상적으로 동작한 reduce라고 봐야 하는 것일까요? 그래서 시도한 부분은 초기값 제외 products값을 map을 통해서 price만을 가지는 number[] 로 변환을 하고 역할을 위임한 함수에서는 object.price가 아닌. 순수하게 현재의 값을 반환 하는 형식으로 변경 처리 하였는데 이렇게 하면 의미가 퇴색 되는 것 같다는 느낌을 받았습니다. ## acc의 초기 값이 price:number가 아닌 {name:string, price:number}가 될 것이라는 부분에서 의문이 들어서 질문 드립니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
질문있습니다.
const Lazy = { *range(num) { for (let i = 0; i < num; i++) { yield i; } }, *filter(predicate, iterable) { for (const value of iterable) { if (predicate(value)) { yield value; } } }, *take(num, iterable) { let cnt = 0; for (const value of iterable) { cnt++; yield value; if (cnt >= num) { break; } } } }; console.time('Lazy'); Array.from(Lazy.take(3, Lazy.filter(num => num % 2 === 0, Lazy.range(100000)))); console.timeEnd('Lazy'); 이해가 한번에 잘 안되어 질문 남깁니다 :) 위 코드를 실행하면, 똑같이 지연평가를 수행하지만 영상과는 반대로 range -> filter -> take 순서로 실행합니다. 지연 평가가 연산의 역순이 핵심이 아니라, yield를 통한 각 요소마다의 다음 연산으로 제어권 위임이 핵심이 맞나요??
- 미해결함수형 프로그래밍과 JavaScript ES6+
지연평가가 가능한 이유가..
Lazy.range 함수가 이터러블 객체를 반환해서라기보다는 제너레이터의 yield를 통한 순차적인 제어권 위임때문이라고 보는게 더 맞지 않나요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
일급과 일급 함수의 강의를 듣고 일급이라는 것에 관해서 질문이 있습니다.
안녕하세요. 일급과 일급 함수에 관해서 강의를 듣고 헷갈리는 부분이 있어 질문드립니다. 일급은 값으로 사용될 수 있고, 변수에 담을 수 있다. const a = 10; 에서 일급은 값으로 사용될 수 있고 변수에 담을 수 있는 10을 의미하는 것이라고 이해하고 있는데요. 일급은 함수의 인자로 사용될 수 있다라는 구문으로 이해해보면 변수도 일급이라고 취급되나요 ?
- 미해결함수형 프로그래밍과 JavaScript ES6+
sort 질문입니다
과정에는 없지만, 나이 또는 이름순으로 오름차순/내림차순으로 정렬하고 싶은경우 코드를 어떻게 풀어가야 할지 질문드립니다.
- 해결됨함수형 프로그래밍과 JavaScript ES6+
Array map 관련 질문
강의를 들으면서 강의 내용을 사용해 보고 싶어서 JS를 사용해서 알고리즘 문제를 가끔 풀어보는데 의문이 생겨 질문 남깁니다. let n = 9; let graph = Array(n).fill(Array(n).fill(0))); 위처럼 정의했을 경우 graph[0][1] = 1을 하면 graph[0 ~ 9][1] 모든 값이 1로 바뀝니다. 하지만 let graph = Array(n).fill(0).map(e => Array(n).fill(0)); 로 정의하였을때는 graph[0][1] = 1을 하면 graph[0][1] 값만 1로 바뀝니다. 혹시 그 이유를 알수 있을까요? 제가 나름 인터넷에 찾아봤는데 정확한 이유를 찾지못하여 답답해 하던중 질문 남깁니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
강의 내용 정리
안녕하세요 좋은 강의 감사드립니다. 강의를 듣고 개인적으로 정리한 내용을 깃헙이나 블로그에 올려도 괜찮을까요??
- 미해결함수형 프로그래밍과 JavaScript ES6+
제너레이터와 관련된 질문입니다.
안녕하세요 :) 공부를 하던 와중에 제너레이터 * 위치에 관련하여 궁금한 점이 생겨서 질문을 드립니다. 강좌에서는 function *gen( ) { ... } 으로 함수 이름 앞에 *를 붙이셨는데 공식문서에서는 function* gen( ) { ... } 으로 function 뒤에 * 를 붙여서 표현했더라구요. 코드 실행은 둘 다 잘 되지만 *(별표) 위치가 함수 이름 앞에 붙이든, function 뒤에 붙이든 상관이 없는 것인지 궁금하여 질문을 남깁니다.
- 함수형 프로그래밍과 JavaScript ES6+
pipe 결과가 undefined가 출력 됨
삭제된 글입니다
- 해결됨함수형 프로그래밍과 JavaScript ES6+
안녕하세요 변수 설정 관련 질문드립니다
안녕하세요 map filter reduce 강의 를 듣는 중에 궁금한 점이 생겨 질문드립니다 let test = ...filter( (p) => p.price < 20000, products) ) 이렇게는 값 할당이 불가능한가요? 그냥 log안에 test의 값을 넣어주면 콘솔에는 잘 찍힙니다. 변수에 담아서 활용해 보고 싶었는데, 담기지가 않네요 이에 대한 설명을 들을 수 있을까요?