Functional Programming - Pure Function

이전 글에서 인자로 인한 결과가 동일해야 한다는 개념을 설명했다. 이는 부작용을 없애주고 이는 여기서는 Pure Function(순수 함수)라 말한다. 보통 FP 에서는 인자가 있어야한다. 그리고 보통 1 개의 인자만 있는게 좋은데 이는 나중에 설명하는 Composition(조합)에서 설명하기로 하고 지금은 그냥 하나만 있는게 좋다로 정도만 알아두자. 예를 들어,

1
2
3
4
5
6
7
8
const multiply = (x, y) => x * y
multiply(3, 7) // 21

const multiply = (x) => (y) => x * y
multiply(3)(7) // 21

const applyMultiply = multiply(3)
applyMultiply(7) // 21

이건 인자에 대한 간단한 설명이었고, 순수 함수란,

1
2
3
4
5
const impure = () => this.x
const pure = (x) => x

const impure = () => +new Date()
const pure = (t = +new Date()) => t

이런 부분이다. 그래서 인자를 통해 결과 값을 도출하는게 부작용 측면에서도 좋다. 함수 scope 안에서 외부의 값들을 받아 실행하려고 하지 말자. 그러는 외부 값으로 부작용이 n 으로 커지게 되는 우려가 있다. 그래서 인자로 받고 계산하여, 결과를 도출하자.

위에서 인자 하나만 받다가 ‘return 이 많아지면 어떻하냐? 라는 고민이 있을 수 있다. 그럼 함수를 최대한 쪼개자. 그러면 함수 자체로 이해가 쉬워지고 네이밍도 편해진다. 그리고 너무 쪼갯다는 것은 나중에 composition 으로 충분히 다시 조합할 수 있으니 크게 염려하지 말자.