[CS/Functional programming] 함수형 프로그래밍 : Pipe

0
post-thumbnail

🔗파이프?

파이프는 단방향 통신을 위한 용도로 사용된다. 하나의 파이프는 이전 파이프에서 전달된 결과를 파라미터로 삼아 또 다른 결과를 반환한다.

위 그림과 같이 파이프는 입력된 Data를 f파이프 -> g파이프 -> h파이프를 통과시키며 output을 만들어 낸다. 이 파이프가 올바르게 작동하기 위해서는 각 파이프에서 전달하는 값이 항상 정확하고, 예상가능한 값이어야 된다.

만약 이 파이프 라인이 Data 골판지를 가지고 Data 상자를 만드는 공정이라고 가정했을 때, Data 박스를 접착제로 붙이는 역할을 하는 파이프가 외부 온도에 따라 접착시킬 수 있는 모서리의 개수가 다르다면 전체 공정은 항상 다른 Data 상자를 만들어 낼 것 이다. 이 같은 문제를 방지하기 위해 파이프 라인을 구성하는 각 파이프는 외부의 상태의 영향을 받지 않고 input이 같으면 항상 동일한 output을 내는 구조로 설계 되어야 한다.

자바스크립트에서 이러한 파이프의 특성을 가진 함수를 순수 함수 라고 한다.

순수 함수

순수 함수 조건

  1. 같은 입력 값일 때는 같은 반환 값을 보장할 것
  2. 함수 외부 scope의 변수값을 바꾸지 않는다.

파이프 in javascript

const pipe = (...functions) => x => functions.reduce((acc, fn) => fn(acc), x);

참고

0개의 댓글