파이프는 단방향 통신을 위한 용도로 사용된다. 하나의 파이프는 이전 파이프에서 전달된 결과를 파라미터로 삼아 또 다른 결과를 반환한다.
위 그림과 같이 파이프는 입력된 Data를 f파이프 -> g파이프 -> h파이프를 통과시키며 output을 만들어 낸다. 이 파이프가 올바르게 작동하기 위해서는 각 파이프에서 전달하는 값이 항상 정확하고, 예상가능한 값이어야 된다.
만약 이 파이프 라인이 Data 골판지를 가지고 Data 상자를 만드는 공정이라고 가정했을 때, Data 박스를 접착제로 붙이는 역할을 하는 파이프가 외부 온도에 따라 접착시킬 수 있는 모서리의 개수가 다르다면 전체 공정은 항상 다른 Data 상자를 만들어 낼 것 이다. 이 같은 문제를 방지하기 위해 파이프 라인을 구성하는 각 파이프는 외부의 상태의 영향을 받지 않고 input이 같으면 항상 동일한 output을 내는 구조로 설계 되어야 한다.
자바스크립트에서 이러한 파이프의 특성을 가진 함수를 순수 함수
라고 한다.
const pipe = (...functions) => x => functions.reduce((acc, fn) => fn(acc), x);
참고