fxPipe
타입이 있는 왼쪽→오른쪽 합성. 마지막 .then이 곧 함수입니다 — .build()는 없습니다.
강의
pipe는 값을 함수 리스트에 통과시키지만 그 리스트는
dynamic입니다. fxPipe는 함수를 돌려주는
타입이 있는 형태입니다:
final f = fxPipe3(parse, normalise, score);
f(line);
fx(lines).map(f);
각 .then이 지금까지의 체인을 돌려주므로 "끝내는"
단계가 없습니다. 호출하거나 map /
parallel에 넘기세요.
fxPipe(parse)는 곧 parse입니다 — 이름만
시작을 표시합니다. parse.then(normalise)도 됩니다.
.parallel을 두 번 호출하면 결과가 이 isolate로
돌아왔다가 다시 나갑니다. 합성한 워커 하나는 홉을 한 번만 냅니다:
await fx(lines)
.parallel(4, fxPipe3(parse, normalise, score), chunked: true)
.toList();
결과가 parallel 워커일 때 각 단계는 보낼 수 있어야
합니다. juxt는 반대
방향입니다: 함수 여러 개, 입력 하나, 결과 리스트.
fxPipe2..fxPipe5는 같은 단계를 클로저
하나로 합칩니다. 뜨거운 map이나
parallel 워커가 .then마다 중첩
호출을 내지 않습니다. 인자는 5에서 끝입니다
(zipOrAccumulate2..5와 같습니다). 그 이상은
.then을 이어 붙이거나 합친 함수를 직접 쓰세요.
parallel은 VM 전용이라, 아래 플레이그라운드는 같은
합성 함수를 map으로 돌립니다.
데모 1 · parse, normalise, score
단계 세 개, 함수 하나. VM에서는 이것을 parallel에
넘깁니다. 여기선 플레이그라운드에서 돕니다.
데모 2 · 맵 세 번과 같은 숫자
fxPipe는 새 연산자가 아니라 합성입니다.
map 세 번과 합성 함수 하나가 같은 리스트를 찍습니다.
직접 해 보기
연습: parse → normalise →
score를 합성하고, 점수가 4 이상인 행만 남기세요.