55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨함수형 프로그래밍과 JavaScript ES6+
사용자정의 이터러블 질문입니다!
const iterable = { [Symbol.iterator]() { let i = 3; return { next() { return i == 0 ? {done: true} : {value: i--, done: false}; }, [Symbol.iterator]() { return this; } } } }; 이터레이터 안에서 this로 반환하는 이유가뭘까요! 없어도 상태참고가 잘됩니다!
- 해결됨함수형 프로그래밍과 JavaScript ES6+
product가 사라지는 이유는 이건가요?
const go = (...args) => reduce((a, f) => f(a), args); go( product, filter(p => p.price >= 20000), map(p => p.price), reduce(add), console.log ); 모든함수에 curry를 적용하고 나서 go 함수안에 reduce의 영향때문에 굳이 모두 product나 price를 사용하지 않아도 되는지 궁금합니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
reduce 효울성 차이 질문
강의에서 본것처럼 const reduce2 = (f,acc,iter) => { if(!iter){ iter = acc[Symbol.iterator](); acc = iter.next().value; } for(const a of iter){ acc = f(acc,a); } return acc } 아래와 같이 이용해서 test('range',10,() => reduce2(add,range(10000000))); test('Lrange',10,() => reduce2(add,L.range(10000000))); 이 코드를 실행했을떄는 L.range가 성능이 빠른것을 확인했습니다. 비슷하게 아래와 같이 코드 작성후 성능 확인을 했을경우 range함수가 L.range함수보다 빠르게 나오는 이유가 궁금합니다. test('range',10,() => [...range(1000000)].reduce(add)); test('Lrange',10,() => [...L.range(1000000)].reduce(add));
- 미해결함수형 프로그래밍과 JavaScript ES6+
이터레이터를 배열에 담는 의미?
병렬 평가를 할 때 이터러블/이터레이터를 전개 연산자로 풀어서 배열 안에 담아 reduce함수에 전달해주던데요, 이렇게 했을 때 무슨 원리로 병렬 평가가 되는 건지 모르겠습니다 ㅠㅠ 배열도 결국 next()로 순회하는 이터레이터의 한 종류 아닌가요...? 저렇게 했을 때 Promise.all을 해주는 효과가 나나요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
Symbol 사용 이유
안녕하세요. Symbol 사용 이유가 궁금해서 질문을 남기게 되었습니다. const nop = Symbol("nop") 대신으로, const nop = "nop";을 사용해도 정상 작동하는걸 확인했는데요, 1.혹시 Symbol("nop")을 사용하신 특별한 이유가 있을까요? 2.추가적으로 Symbol을 검색해도 명확히 설명 된 글을 찾지 못했습니다ㅠ. Symbol에 대해서 간단히 알려주실 수 있을까요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
for 와 while 동작 차이
const reduce = curry((f, acc, iter) => { const head = iter => go1(take(1, iter), ([h]) => h); if (!iter) return reduce(f, head(iter = acc[Symbol.iterator]()), iter); iter = iter[Symbol.iterator](); return go1(acc, function recur(acc) { // WARN: 여기선 for 문을 쓰면 안됨 for (let a of iter) { // Promise 확인용 함수 reduceF 를 이용 acc = reduceF(acc, a, f); if (acc instanceof Promise) return acc.then(recur); } return acc; }); }) 여기서 for 와 while 의 동작 차이가 발생합니다.기존 recur 함수 안의 while 문을 for 로 대체하였을때 두번째 recur 실행 부터 iterator 가 정상적으로 실행되지 않고 종료가 되버립니다.이는 Promise 로 변경하였을때만 발생하였습니다. go([1, 2, 3, 4, 5, 6], L.map(a => a * a), L.filter(a => a % 2), reduce(add), console.log ) // 정상 동작 혹시여기서 for 와 while 의 차이가 발생하는 이유를 설명해주실 수 있을까요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
SCRIPT에서 HTML TAG 생성
안녕하세요. 마크업된 HTML TAG를 SCRIPT로 제어한다고만 생각해보았지 SCRIPT에서 만들어서 그려주는건 사실 잘 안쓰는줄 알았는데, 설명하기 위해서 이방법을 쓰신건가요? 아니면 실무에서도 사용하는지 궁금합니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
강의랑 똑같이 콘솔 띄우는 방법
콘솔창을 어떻게 띄우냐는 질문들이 몇개 있어서 적어봅니다! 1. 예제 코드를 다운받습니다. 2. 크롬에서 이번 강의에 해당하는 html파일을 엽니다. 3. 크롬 개발자 도구를 엽니다. 4. 개발자도구를 새 창으로 띄웁니다. 4-1. [아래사진참고] 개발자 도구를 켜서 점 세개 메뉴를 클릭하면 창 배치를 고를 수 있습니다. 가장 왼쪽의 작은 네모 두개가 겹쳐져 있는 아이콘을 클릭합니다. 5. 에디터에서 해당 html파일을 열고, 개발자도구와 화면 분할하여 한 화면에 띄웁니다. 6. 에디터에서 수정한 것을 저장하고, 콘솔창에서 새로고침(단축키: 맥에서 Cmd+R) 하면 강의처럼 작성한 내용이 바로 콘솔창에 반영됩니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
자바스크립트 기본서 추천 문의
자바스크립트를 기본부터 제대로 공부하고 싶은데요. 꼭 봤으면 하는 자바스크립트 기본도서 있을까요? 추천 좀 부탁 드립니다. 감사합니다 ^^
- 미해결함수형 프로그래밍과 JavaScript ES6+
강의 선수과목
안녕하세요. 해당 강의를 듣기 전에 "자바스크립트로 알아보는 함수형 프로그래밍"은 선수과목 인가요??
- 미해결함수형 프로그래밍과 JavaScript ES6+
질문이요
선생님. 근데 curry같은 경우는 인자를 2개째 받게 되면 실행이 되잖아요. 만약 갯수를 설정해서 3개를 받았을때도 실행되도록 하고 싶은데, 조건문을 사용하여 curry함수 로직을 바꾸면 될까요? filter함수를 이렇게 만들고 싶거든요... 근데 저 함수는 인자 3개를 받아 실행을 해야해서 curry가 안되더라구요 혹은 저 함수를 인자 2개만 받아도 조건과 push함수가 다르도록 고치는 방법이 있다면 조언해주시면 감사드리겠습니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
안녕하세요 reduce 함수 사용에 대해서 질문 드립니다
안녕하세요 . reduce 2에서 공부한 함수에서 궁금한 점이 생겨서 질문 드립니다. 먼저 제가 시도하려던 방향은 iter를 비우고 파라미터를 2개만 받아서 함수를 구현하려고 했는데 비구조화 함수를 쓰면서 되게 복잡하게 함수가 구현이 되었습니다. 그러면 acc가 optional이 아니라 필수처럼 보이게 되어서 그런데 이를 좀 더 간단하게 만들거나 추상적인걸 잘 만족시킬 수 있는 방법이 있을까요? const reduce = (f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); [acc, ...iter2] = iter; } for (const a of iter2) { acc = f(acc, a); } return acc; }; console.log( reduce((a, b) => { return { price: a.price + b.price }; }, products) );
- 미해결함수형 프로그래밍과 JavaScript ES6+
3편 강의나 추가적인 저서 출판 소식은 없나요?
안녕하세요~ 1년차 UI 개발자입니다. 현재 함수형 프로그래밍과 Javascript ES6+를 수료하고 한번 더 다시 들으면서 개념을 정리를 하고 있습니다. 매우 많은 도움이 되었고 다음에 들을 응용편도 기대가 됩니다. 이전에 저자님이 작성하신 책에서도 많은 것을 보고 배웠습니다. 혹시 응용편 다음에 나올 강좌나 기존에 작성하신 책에 대한 개정판은 언제 나오게 될까요? 개인적으로 추후에는 유인동 저자님이 만든 함수형 강좌를 기반으로 작은 프로젝트를 만드는 강좌가 있으면 참 좋겠습니다!
- 미해결함수형 프로그래밍과 JavaScript ES6+
안녕하십니까. es6입문하려고합니다.
안녕하세요 웹개발 4년차 접어드는 개발자입니다. 저희회사에서는 es6를사용하지않고있는데요. 이강의가 es6입문용으로 괜찮은건가요 아니면 다른강의로 es6에 대해 공부를하고듣는것이 좋을까요?
- 미해결함수형 프로그래밍과 JavaScript ES6+
자바스크립트 고수님께 JS 학습도서 좀 문의 드립니다.
강사님. 안녕하세요. 전 자바스크립트를 배우고 싶어하는 예비 개발자입니다. 책도 여러 권 봤는데요. 딱 제 것이 되었다는 느낌이 없네요. 우연히 강사님의 함수형프로그램 무료 강의를 봤고 큰 도움을 받아 이어서 본 강좌로 듣게 되었습니다 제 실력이 함수형프로그램에 관심가질 수준은 아닌데요. 함수형프로그래밍이 너무 멋진것 같아서 덜컥...ㅎㅎ 사실 강의 외 질문인데요. 전 자바스크립트 초자입니다. 책, 인터넷 등으로 통해 자바스크립트 독학중인데요. 제 고민이... 어찌 공부하면 좋을지 입니다. 방법 좀 알려주세요. 실무에 가서 고참들 코드 흉내내며 손가락으로 배우는게 젤 좋다고는 알고 있구요. 그런데 지금 직접 코딩하는 현장에 있지 않다보니 그때를 대비하여 기본기를 익혀 두려합니다. 개발 전 또는 어느 정도 개발 경험이 있더라도 자바스크립트 개발자라면 꼭 봐야할 도서나 현장 투입을 준비하면서 이런 식으로 공부를 하면 좋겠다는 고견 등 좀 부탁 드려도 될까요? 강사님 강의는 다 듣고 싶습니다. 함수형 프로그래밍 말고 자바스크립트 중급과정 뭐 이런건 없으세요? 제 글을 읽어 주셔 감사합니다.
- 해결됨함수형 프로그래밍과 JavaScript ES6+
pipe 내에서 go() 함수 호출시에도 ... 전개 연산자 사용 문의
const pipe = (...fs) => (a) => go(a, fs) 이럴 것으로 예상했는데요, const pipe = (...fs) => (a) => go(a, ...fs) 이렇게 해야 되나 봐요? (...fs) 함으로써, 이미 fs는 풀어 해쳐진 값이 들어 가 있는데, 다시 go 함수로 전달할 때, go(a, ...fs) 여기에도 전개연산자를 써야 하나요?
- 해결됨함수형 프로그래밍과 JavaScript ES6+
강의에서 사용하시는 map() 함수는 강의 초반에 구현하신 그 함수죠?
.map은 언어에서 제공하는 부분 같은데요, map 강의 초반에 직접 구현하신 map()은 언어 제공부분이라기 보다, 그렇게 구현할 수 있다고 예시로 보여주시는거죠?
- 미해결함수형 프로그래밍과 JavaScript ES6+
go 내부의 제네레이터는 reduceF를 거치지않나요?
복습을 하고있던 중에 이런 코드를 돌리면서 생각을 했는데요. [...iter]를 실행하는 과정에서 예를들어 여기에서 3이 내려온다고 생각해봤습니다. map1의 f1가 적용된 f1(3)이 될 것이고 이 f1(3)이 filter에 적용되려면 아래로 내려가야됩니다. go는 reduce로 구현되어있고 reduce에 의해 꺼내진 cur이 f1(3)이 될것이고 얘는 promise 입니다. filter2의 f2에 적용되기 위해서 f1(3)은 reduceF에 들어갈 것인데요 reduceF엔 보시다시피 catch가 달려있습니다. 따라서 여기까지 내려온 3은 f1(3).then(f2).catch() 이렇게 되있을것이고 따라서 마지막 map3을 거쳐서 [...iter]에 프로미스가 내려왔을때, 3이 들어간 프로미스의 모습은 f1(3).then(f2).catch().then(f3).catch() 이렇게 되어있을거라고 생각합니다. 그럼 각 프로미스에 catch가 달려있으니 nop에 대한 에러처리가 필요없을 것이라고 생각했습니다. 그런데 실행시켜보면 에러가 콘솔에 찍힙니다. 그렇다는건 실제로는 reduceF를 거치지않고 then으로만 내려왔다는 것일까요? 아무리 생각해봐도 이해가 되지 않네요..
- 미해결함수형 프로그래밍과 JavaScript ES6+
reduce 에서 초기값이 없을 때
const reduce = (f, iter, acc) => { if (acc === undefined) { iter = iter[Symbol.iterator](); acc = iter.next().value; } for (const a of iter) { acc = f(acc, a); } return acc; }; log(reduce(add, [1, 2, 3])); log(reduce(add, [1, 2, 3], 10)); 위 처럼 acc가 옵션값으로 마지막에 들어가지 않고 설명에서 acc 를 중간에 넣으신 이유가 궁금합니다.
- 미해결함수형 프로그래밍과 JavaScript ES6+
옆에 콘솔창은 어떻게 띄우나요?
궁금합니다.