💰 포인트 기능 오픈 💰
함수형 프로그래밍과 JavaScript ES6+

함수형 프로그래밍과 JavaScript ES6+

(36개의 수강평)

996명의 수강생
55,000원
지식공유자 · 유인동
71회 수업· 총 8시간 7분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 초급, 중급
뿡아 프로필

reduce 에서 초기값이 없을 때 뿡아 3일 전

const reduce = (fiteracc=> {
    if(!acc){
        iter = iter[Symbol.iterator]();
        acc = iter.next().value;
    }
    for (const a of iter) {
        acc = f(acca);
    }
    return acc;
};

log(reduce(add, [123]));
log(reduce(add, [123], 10));

위 처럼 acc가 옵션값으로 마지막에 들어가지 않고

설명에서 acc 를 중간에 넣으신 이유가 궁금합니다.

2
임성훈 프로필

옆에 콘솔창은 어떻게 띄우나요? 임성훈 1달 전

궁금합니다.

1
Daniel Lee 프로필

다음 강좌에 대한 일정을 알고싶습니다. Daniel Lee 1달 전

안녕하세요.

다음 강좌에 대한 일정을 알고싶습니다. 혹시 계획이 있으신가요?

감사합니다.

1
최현성 프로필

!(cur = iter.next()).done 최현성 1달 전

안녕하세요 강좌 잘 보고 있습니다

강의에서 

!(cur = iter.next()).done;

(res.push(a),res).length;

같은 부분의 용법이 정확히 어떻게 되는건가요?

리턴값이 어떻게 나오고 사용법이 어떻게 되는지는 알겠지만

저런 문법을 한번도 본적이 없어서 질문드립니다

1
mollang 프로필

fx.js 파일 mollang 1달 전

혹시 const go, pipe 등... 함수들 묶어둔 fx.js 파일을 볼 수 있는 깃 주소가 있으실까요?

1
너를만나 프로필

a.then()을 return 하는 이유가 뭐고 어떻게 동작하는 건가요? 너를만나 1달 전

5:18 쯤에 return a.then()을 작성하시는데 여기서 a.then을 왜 return 하는지 모르겠어요.

if (a instanceof Promise) {
  a.then(a => {
    res.push(a);
    if (res.length == l) return res;
  }
} else {
  res.push(a);
  if (res.length == l) return res;
}

그냥 이렇게 작성하면 안 되는 건가요? 그 뒤에 재귀함수로 작성하기 위해서 그런 건가요?

그리고 재귀함수에서 동작이 이해가 안 가는 게 있는데 재귀함수 recur() 안에서 return a.then()을 하면 결국 Promise를 반환하는 거니깐 거기서 재귀가 끝나게 되는 거 아닌가요? a.then() 안에서 recur()를 호출한다 하더라도 처음에 실행했던 recur()와는 별개로 동작하는 것처럼 보이는데 실행 흐름이 어떻게 되는지 궁금합니다.

제 생각에는 만약 take에 넘어오는 이터러블이 [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)]이고, take(2)를 했을 때, 재귀를 다 돌고 최종적으로 return 되는 값이 Promise.resolve(1).then(() => Promise.resolve(2).then(() => [1, 2])) 이런 식으로 될 것 같은데 이게 맞나요?

1
정덕수 프로필

reduce((a, f) => f(a), args) 정덕수 1달 전

go 함수를 만들면서 reduce를 사용하는 것은 이해했는데 reduce((a, f) => f(a), args)에서 (a, f) => f(a)로 어떻게 추상화했는지 이해가 되지 않습니다.
왜 매개변수로 a와 함수를 넘기는 걸까요?
이해가 될듯 하면서도 다시 봐도 모르겠네요.

1
파이 프로필

유명함수 recur에서 go1로 변경되는 부분 문의 파이 2달 전

유명함수 recur에서 go1로 변화된 부분이 이해가 안 가는데요.

동작이 어떻게 되는지가 정확히 이해가 안가서요.

 function recur(acc) { ... }(acc); 에서 뒤에 (acc)가 go1로 갈 때 없어진 이유가 뭔지 이해를 못 했습니다.

go1의 첫번째 인자 acc가 function recur의 인수로 들어가는데, 뒤에 있던 (acc)가 왜 없어져야 하는지가 제대로 이해를 못 해서 설명 부탁드립니다.

function recur(acc) {
  ...
  return acc;
}(acc);

에서 

go1(acc, function recur(acc) {
  ...
  return acc;
});

1
iternity 프로필

take 내부의 이터레이터 클로저에 대해 iternity 3달 전

while (!(cur = iter.next()).done) {
let a = cur.value;

를 

for (const a of iter) {

로 바꾸면 비동기상황에서 iter를 기억하지 못해서 하나만 take하게 되더라구요.

두 문법이 같은 걸로 알고있는데 for of 내부의 이터레이터는 클로저로 사용될수없나요? 이런경우엔 while밖에 쓸수없는건가요?

클로저로 사용되려면 함수내부에서 표현식 안에 갖혀있어야된다는 조건? 같은게 있나요?

3
J C 프로필

왜 recur함수를 즉시 실행시켜야 하나요? J C 3달 전

recur 함수 안에서 재귀를 이미 부르고 있는데 

recur 맨 뒤 () 가 필요한 정확한 이유가 무엇일까요? 

const take = curry((l, iter) => {
  let res = [];
  iter = iter[Symbol.iterator]();
  return function recur () {
    let cur;
    while (!(cur = iter.next()).done) {
      const a = cur.value;
      if (a instanceof Promise) {
        return a
        .then(a => (res.push(a), res).length == l ? res : recur())
        .catch(e => e == nop ? recur() : Promise.reject(e));
      }
      res.push(a);
      if (res.length == l) return res;
    }
    return res;
  }();
});

1
J C 프로필

L.deepFlat function J C 3달 전

L.deepFlat function expression 에서  *f 가 제네레이터 함수이름도 아니고 어떻게 작동하는지 잘 이해가 안갑니다.

1
Kim jae-eok 프로필

map , filter , reduce 등의 함수를 정의할때 매개변수 순서가 이전하고 상이한것 같습니다. Kim jae-eok 4달 전

이전 강좌였던 "자바스크립트로 알아보는 함수형 프로그래밍" 에서 사용되는 라이브러리와 underscode , lodash 에서는

f( 리스트 , 함수 ) 이렇게 정의했었는데 ,

이번강의에서는 f(함수 , 리스트) 이렇게 정의하고 있어서

어떤의미로 순서가 바뀌었는지 알고 싶습니다.

감사합니다.

2
J C 프로필

Devtool 질문 J C 4달 전

강의에서 쓰시는 code tool들이 궁금합니다.

콘솔 창이 바로 옆에 있는 것도 편리해 보이네요!

더불어 console.log 대신 log 만 써도 되는건

확장 프로그램 때문인가요? 

1
gogosssing95 프로필

코드 질문드립니다. gogosssing95 4달 전

const join = curry((sep = ','iter=>
    reduce((ab=> `${a}${sep}${b}`iter));

sep = ',' 이부분에 왜 =',' 가 작성되는것인가요?

저 코드가 어떻게 동작하는지 이해가 잘 가지않습니다.

=','가 없을때도 똑같이 동작하는데 그렇다면 없어도 되는것일까요? 제가 코딩공부를 시작한지 얼마되지않아서 이것저것 질문을 많이 남기네요 ㅎㅎ.. 

1
gogosssing95 프로필

products가 사라지는 부분 gogosssing95 4달 전

다른분이 질문한것에서 저도 의문이 생겼는데 답변을 봐도 이해가 잘되지않습니다. 

curry함수에 의해서

products =>filter(p=>p.price <20000, products)가

products ⇒ filter(p⇒p.price <2000)(products)로 변화되고

filter(p⇒p.price <2000)  이렇게 축약되었을때 어떻게 같게 작동하는지 모르겠습니다.

a => f(a) 라는 함수는 그냥 f와 하는일이 같다는 말이 이해가 잘안됩니다. 조금만 더 풀어서 설명부탁드립니다.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스