1. 순수함수, Pure Function (Functional Programming in Swift)

순수 함수(Pure Function)에 관해 알아보도록 하겠습니다.

jinShine
jinshine 기술 블로그
2 min readApr 30, 2019

--

함수형 프로그래밍

Funtional Programming은 함수를 중심으로 Side-Effect가 없도록 프로그래밍을 하는 것을 말합니다.

여기서 말하는 함수는 순수함수를 말합니다.

순수함수 (Pure Function)

  • input : 어떠한 함수에서 외부의 데이터를 직접적으로 사용하지 않고, 파라미터로 받습니다.
  • output : input값에 의해 output이 결정되기 때문에 외부의 값들이 변경되더라도 함수 자체에는 외부에 영향을 받지 않기 때문에 Side-Effect가 없다는 것입니다.

위에 getName함수는 외부에 있는 name에 의해 영향을 받습니다.

지금은 간단한 예제이지만 복잡한 프로젝트에서 다른 외부의 변수들을 함수내에 직접적으로 가져다 사용하면 Side-Effect가 존재할 가능성이 다분하죠.

이것을 순수 함수로 바꿔보겠습니다.

느낌이 오시나요?

함수 자체에 파라미터로 받은 name의 데이터로만 결정되기 때문에 외부의 영향을 전혀 받지않고, 파라미터의 입력값에 대해서만 동일한 결과를 나타낼수있죠.

하지만!

지금 받은 느낌을 살짝 깨보도록 하겠습니다.

결론부터 이야기하자면 위에 코드도 순수함수입니다.

var로 되어있는 mutable데이터는 외부에서 가져다 쓰면 변경될 가능성이 있어 Side-Effect가 발생할 수 있고, let으로 정의 되어있는 변경 불가능한 immutable 데이터를 외부에서 사용해도 input에 의해 동일한 ouput을 내기 때문에 순수함수입니다.

다음은 합성함수 (Composition)에 관해 포스트 하겠습니다.

--

--