fxjs가 lodash나 ramdajs에 비해 얻는 장점이 뭐가 있을까요?

해결됨
이성필 프로필

실무에서 함수형 프로그래밍 도입을 위해 라이브러리들을 고민하고 있습니다.

거론되는 라이브러리는 ramdajs, lodash가 있구요.

아무래도 fxjs를 통해 FP를 배우기 시작해서 저에게 제일 편한건 fxjs이긴 합니다.

다만 위 라이브러리들이 더 글로벌하게 쓰이고 있어서 팀원들을 설득하기 위해 알아보고있지만,

아직 경험이 많이 없다보니 그런 안목이 아직 부족합니다.

위 라이브러리들을 훑어 봤을 때

fxjs로 transducer를 더 직관적으로 작성할 수 있고,

병렬평가가 가능합니다. 이외에도 여타 다른 라이브러리에 비해 장점으로

무엇을 꼽을 수 있을까요..?

그리고 fxjs2의 경우 tree shaking을 지원하는지도 궁금합니다

유인동 프로필
유인동 7달 전

안녕하세요. :)

감사한 질문이네요! 조금 정리해서 적어보았어요.

1. 대부분의 라이브러리들이 Promise를 잘 지원하지 못합니다.

2. Promise를 잘 지원하지 못하면 async/await 와 함께 사용하지 못합니다.

3. async/await를 사용하지 못하면 비동기 에러 핸들링이 어려워집니다.

4. fxjs는 ES6 표준 이터러블 프로토콜을 따르고 있어 이터러블/이터레이터/제너레이터와 잘 조합됩니다.

5. fxjs는 Promise를 잘 지원합니다.

6. fxjs는 지연 평가와 Promise가 함께 잘 동작합니다.

7. fxjs는 async/await 와 함께 사용할 수 있으며, 비동기 에러핸들링이 쉽습니다.

8. fxjs는 병렬적 동시 평가를 다루는 많은 함수들이 있습니다. (C.takeAll, C.takeRace, C.race, C.map 등..)

9. fxjs는 함수 하나 하나가 코드가 간결하고 이해하기 쉽게 잘 작성되어있습니다.

10. fxjs는 tree shaking 을 잘 지원합니다.

11. fxjs는 이전 브라우저, 최신 브라우저, CommonJS, ESM 등의 환경을 모두 잘 지원하고 있습니다.

12. fxjs는 슬랙 채널을 운영하고 있습니다. 

초대링크

https://join.slack.com/t/fxjs/shared_invite/enQtNzMzMjM2OTQyNjEzLTI2NzlhMzQ0N2FkZjUwOTkxMmIwNDUzM2YyYjFkMDI1ODgyYWRjMWUzYmViODQ2ZjRlMWEzZTE4NzYzZDY1YjA

13. 다른 라이브러리에서 아래와 같은 코드가 동작하는지 테스트해보세요. 대부분의 다른 라이브러리들은 1번 상황에서 이상한 값이 나오고 2번 상황에서는 에러핸들링이 안되고 에러가 터질거에요. :)


// 1
async function f1() {
const res = await go(
[1, 2, 3, 4, 5],
L.map(a => new Promise(resolve => resolve(a * a))),
L.filter(a => new Promise(resolve => resolve(a % 2))),
L.take(3),
reduce((a, b) => a + b));

return res * 10
}

f1().then(console.log); // 350

// 2
async function f2() {
try {
return await go(
[{ val: 1 }, { val: 2 }, null, { val: 4 }, { val: 5 }],
L.map(({val}) => new Promise(resolve => resolve(val + 10))),
L.filter(a => a % 2),
L.take(3),
reduce((a, b) => a + b));
} catch (e) {
return 0;
}
}

f2().then(console.log); // 0

슬랙에서 뵈어요 :)

이성필 프로필
이성필 7달 전

세상에! 자세한 설명 너무나 감사합니다. 초대까지 해주시다니 다시 감사합니다!

Kim jae-eok 프로필
Kim jae-eok 5달 전

와 정말로 1번 상황에서 이상한 값이 나오네요 !

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