💻 Dev

🛠️ 처음부터 만드는 Pipe — 함수 체이닝으로 데이터 변환 파이프라인 만들기

데이터를 여러 함수에 차례로 통과시키면서 변환하고 싶을 때가 있습니다. Pipe는 왼쪽에서 오른쪽으로 값을 흘려보내는 함수 조합 유틸입니다.

왜 Pipe를 쓸까?


함수 체이닝이 길어지면 읽기 어렵습니다:
```javascript
// 😵 중첩된 함수 호출 — 안쪽부터 밖으로 읽어야 함
const result = subtract(5, multiply(3, add(2, 5)));
```
Pipe를 쓰면 자연스럽게 읽힙니다:
```javascript
// ✅ 왼쪽에서 오른쪽으로 흐름이 명확함
const result = pipe(
(x) => x + 2,
(x) => x * 3,
(x) => x - 5
)(5);
```

15줄 구현


```javascript
const pipe = (...fns) => (value) =>
fns.reduce((acc, fn) => fn(acc), value);
const compose = (...fns) => (value) =>
fns.reduceRight((acc, fn) => fn(acc), value);
```
pipe: 왼쪽→오른쪽 (자연스러운 흐름)
compose: 오른쪽→왼쪽 (수학 함수 합성)

실제 사용 예


```javascript
const add = (x) => (y) => x + y;
const multiply = (x) => (y) => x * y;
const subtract = (x) => (y) => y - x;
const transform = pipe(
add(2), // 5 + 2 = 7
multiply(3), // 7 * 3 = 21
subtract(5) // 21 - 5 = 16
);
console.log(transform(5)); // 16
```
데이터 처리 파이프라인:
```javascript
const fetchAndProcess = pipe(
async (userId) => await fetchUser(userId),
(user) => ({ ...user, premium: true }),
(user) => JSON.stringify(user),
(json) => Buffer.from(json).toString('base64')
);
```
Pipe는 함수형 프로그래밍의 핵심이며, ramda.js, lodash/fp, RxJS 등 대부분의 함수형 라이브러리에서 기본 제공합니다.
💬 0
👁 0 views

Comments (0)

💬

No comments yet.

Be the first to comment!