Swift의 함수형 프로그래밍에 대해서 알아보자.
먼저 순수함수가 무엇일까?
순수함수란, 외부 상태에 의존적이지 않고, 어떤 사이드이펙트도 발생시키지 않는 함수
항상 같은 input에 대해서는 같은 output을 return하는 함수라고 할 수 있다.
순수 함수는 재사용하기 쉽고, 테스트하기 좋고, 예측이 가능하다는 점에서 장점이 있다.
var name = “zoe”
func getName() -> String {
return name
}
위 getName 함수는 외부에 있는 변수인 name에 영향을 받는다.
위 함수를 순수함수로 수정해보자면,
func getName(_ name: String) -> String {
return name
}
외부에 영향을 받지 않는 순수함수로 수정했다.
let name = “zoe”
func getName() -> String {
return name
}
mutable하지 않은 name이므로 위 함수도 순수함수이다.
함수형 프로그래밍이란, 바로 이 순수함수를 이용해서 프로그래밍하는 것이다.
순수함수를 1급 객체로 간주하여 사용한다.
1급 객체로 간주한다는 것은
- 변수나 데이터 구조 안에 담을 수 있다.
- 파라미터로 전달할 수 있다.
- 반환값으로 사용할 수 있다.
- 할당에 사용된 이름과 무관하게 고유한 구별이 가능하다.
다음 시간에는 함수형 프로그래밍에서 함수의 composition에 대해 알아보자.