지연 평가와 동시성을 기본으로 갖춘,
Dart를 위한 함수형 프로그래밍.

FxDart는 FxTS를 Dart로 포팅한 라이브러리입니다 — 동기 데이터와 비동기 데이터 위에서 지연 파이프라인을 조합할 수 있게 해 주며, 1초짜리 요청 여섯 개를 순차 실행에서 2초짜리 동시 실행 묶음으로 바꾸는 데 메서드 호출 하나면 충분합니다.

📒 실제 앱으로 확인하기: Daily Ledger — FxDart로 만든 완성형 앱 →

⚖️ Dart vs FxDart — 실전 과제 53개, 나란히 비교 →

RxDart vs FxDart — 푸시 vs 풀, 솔직한 판정 50개 →

▲ 실제로 동작합니다 — 코드를 수정하고 Run을 눌러 보세요. 실제 Dart 컴파일러로 컴파일되어 브라우저에서 실행됩니다.

FxDart란?

FxDart는 FxTS의 프로그래밍 모델을 Dart로 가져옵니다. 컬렉션과 비동기 데이터를 변환하는 작고 조합 가능한 함수 약 120개로 이루어진 도구 모음입니다. 핵심은 세 가지입니다.

시간에 따른 이벤트, 그리고 값으로서의 실패는 나머지 두 표면에 있습니다. 어느 표면?이 결정이고, 이 페이지는 소개 페이지로 남습니다.

왜 필요한가?

Dart에는 이미 IterableStream이 있습니다. FxDart는 그것들이 한계에 부딪히는 지점에서 제 몫을 합니다.

문제순수 DartFxDart
동시 API 호출을 n개로 제한하면서 순서 유지 직접 만든 큐, Completer, 세심한 상태 관리 .map(fetch).concurrent(3)
비동기 변환 파이프라인 Stream은 푸시 기반이라 await와 배압, 지연 평가를 섞으면 복잡해집니다 풀 기반 체인 — 각 값은 요청받았을 때만 계산됩니다
데이터 가공(그룹화, 인덱싱, 카운트, 분할, zip, 청크…) 매번 직접 작성하는 반복문 개념마다 하나씩, 충분히 검증된 이름 있는 함수
읽기 쉬운 다단계 변환 중첩 호출 또는 중간 변수 완전한 타입이 유지되는 좌에서 우로 흐르는 fx() 체인

장점 & 단점

✓ 장점

  • 거저 얻는 지연 평가 — 파이프라인은 단락 평가되며, 요청된 값만 계산됩니다.
  • 순서를 보존하는 동시성을 연산자 하나로: concurrent(n), 완료 순서가 필요하면 concurrentPool(n).
  • 완전한 타입 체인fx()는 처음부터 끝까지 타입 추론을 유지합니다. 동기 연산자는 네이티브 Iterable을 다루는 평범한 함수이므로 일반 Dart 코드와 그대로 어울립니다.
  • 작고 목적이 분명한 함수 — 변환 / 필터 / 슬라이스 / 결합 / 집계 / 객체 / 유틸을 아우르는 약 120개의 연산자.
  • 검증된 동작 — FxTS의 동작을 850개가 넘는 테스트와 함께 그대로 옮겼습니다.
  • 의존성 없음 — 순수 Dart.

✗ 단점

  • data-last 커링 없음 — Dart에는 함수 오버로드가 없어서 FxTS의 커링된 pipe 스타일이 체인으로 바뀝니다. 동적인 pipe()는 정적 타입을 잃습니다.
  • 또 하나의 비동기 추상화Stream으로는 동시성 역채널을 표현할 수 없기 때문에 FxAsyncIterable이 존재합니다. 상호 변환은 쉽지만, 익혀야 할 개념이 하나 늘어납니다.
  • 학습 곡선 — 지연 파이프라인으로 사고하는 방식은 명령형 반복문과 다릅니다.
  • 항상 가장 빠르지는 않음 — 아주 작은 핫 루프라면 손으로 쓴 for가 연산자 조합보다 빠를 수 있습니다. FxDart는 명료함과 I/O 바운드 작업에 최적화되어 있습니다.
  • 그대로 옮겨지지 않는 TS API도 있음 — 대신 Dart다운 표기를 따릅니다. curry는 타입이 있는 .curried 확장 게터가 되었고, 기존 이름은 마이그레이션을 위한 deprecated 스텁으로 남겨 두었습니다.

동시성 맛보기

각각 300 ms가 걸리는 가짜 요청 여섯 개 — 순차 실행이면 약 1.8 s, concurrent(3)을 쓰면 약 0.6 s입니다. 숫자를 바꿔 보세요.

학습 시작하기

FxDart 101 →

강의와 라이브 데모, 그리고 모든 함수마다 마련된 플레이그라운드로 이루어진 가이드 코스.

첫 번째 강의: map →

가장 기본이 되는 연산자부터 시작하세요.

설치 →

pubspec에 fxdart를 추가하고 소스 코드를 살펴보세요.