inflearn logo
강의

Course

Instructor

Functional Programming and JavaScript ES6+

Make your code more readable using go+curry

3개 이상의 인자가 있는 함수의 경우 처리

475

oscar

1 asked

4

지금 구현한 curry 는 3개 이상의 인자가 있을 때, 첫 번째 인자만 고정하고, 나머지 인자를 한 번에 넘겨서 호출해야만 처리가 가능한데요. 이게 의도하신건가요? 원래 커링은 여러 개의 인자가 있을 때, 변수를 하나 씩 고정하는 함수열로 만드는 거라고 알고 있어서요. 

예를 들어, const test = curry((a,b,c) => a+b+c) 에서 console.log(test(1)(2)) 하면 NaN 이 나옵니다. 

javascript 함수형-프로그래밍

Answer 5

5

wpark

3번 이상의 lazy evaluation 이 가능하면 더 좋지 않을까해서 한번 구현해봤습니다 :)

const curry = f => function curried(...args) {
  return args.length >= f.length ? f(...args) : (...args2) => curried(...args, ...args2);
}

const c_add = curry((a, b, c) => a + b + c);
c_add(1, 2, 3);
c_add(1)(2, 3);
c_add(1, 2)(3);
c_add(1)(2)(3);

1

mduniv

2개의 인자를 넣어도 실행되고, 3개의 인자를 넣어도 실행되어야 하는 경우 때문에 그렇습니다 :)

1

mduniv

넵 한 번의 커리만 의도한거에요. :)

가변인자를 지원하는 자바스크립트에서는 이 방식이 실용적이라고 보고 있습니다.

감사합니다.

 

0

mduniv

멋집니다 :)

0

Jin

안녕하세요 강의 잘 듣고 있습니다. 

가변인자를 지원하는 자바스크립트에서는 한 번의 커리가 실용적이라 말씀해주셨는데, 이부분이 크게 와닿지가 않네요. 😂😂

혹시 조금만 더 풀어서 설명해주실수 있을까요?

프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다

1

111

1

함수형 프로그래밍 심화 강의 자료 추천

0

72

2

함수형 자바스크립트 프로그래밍 책

0

54

1

filter가 아무것도 걸러내지 못하는 경우

0

114

1

take 함수의 성능적면에서의 이점

1

463

1

pipe함수

1

531

1

Identity 함수

0

450

1

함수형 프로그래밍이란

0

832

1

reduce 예제 코드 제안!

0

405

1

fxts를 배워보려고 합니다.

1

537

1

flatMap 관련 질문드립니다~

1

444

1

다용성이 높은 L.flatMap

0

358

1

변수에 재 할당 금지~

0

540

1

DevTools라고 옆에 결과 확인하는거 어떻게 하나요?

0

483

2

소요시간에 관해서 질문드립니다

1

458

1

join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!

0

465

2

reduce에 L.range를 사용할 때

0

527

2

[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유

3

739

2

제가 이해한 C.Reduce와 Reduce의 동작 차이 정리

2

787

3

go, pipe 함수 관련하여 질문 드립니다.

1

499

1

안녕하세요 강사님!

0

380

2

fxts에 go가 없는 이유?

0

840

1

비동기 관련 질문입니다!

0

462

1

질문 있습니다.

0

517

1