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가 없다는 것입니다.
var name = “jinShine”func getName() -> String { 
return name
}

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

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

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

func getName(_ name: String) -> String {
return name
}

느낌이 오시나요?

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

하지만!

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

let name = "jinShine"func getName() -> String {
return name
}

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

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

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

--

--