OOP 다음으로 떠오르는 패러다임인 FP에 대해서 알아보자. 물론 FP는 OOP보다 먼저 등장했다. 그렇다면 갑자기 왜 등장하게 되었을까? FP의 장점과 개념을 이해하면서 알아가보자.
자료 처리를 수학적 함수의 계산으로 취급
상태와 가변 데이터를 피함
Side-Effect가 없음
Function이란?
떠오르는 Paradigm
var와 loop가 없는 코드
순수 함수형 프로그래밍 언어에는 변수와 loop가 없다.
이 가정을 하고 구구단 코드를 만들어보자.
func gugudan(left: Int, right: Int) {
if left > 9 || right > 0 {
return
}
print("\(left) x \(right) = \(left * right)")
if right <= 9 {
gugudan(left: left, right: right+1)
} else {
gugudan(left: left + 1, right: 1)
}}
}
gugudan(left: 1, right: 1)
이렇게 재귀로 짜야 한다.
갑자기 딱, 풀려고 하니 갑자기 바보가 된 기분이 든다.
사고의 전환을 해야 한다..
Pure Function
Anomymous Function
Higher-Order Function
예시
import Foundation
// Anonymous function
let inRange: (Int) -> Bool = { (_ value: Int) -> Bool in
return value <= 9
}
// Pure Function
func print(left: Int, right: Int) {
print("\(left) x \(right) = \(left * right)")
}
// higher Order Function
func gugudan(left: Int, right: Int, checker: (Int) -> Bool) {
if checker(left) == false || checker(right) == false {
return
}
print(left: left, right: right)
if checker(right + 1) {
gugudan(left: left, right: right+1, checker: checker)
} else {
gugudan(left: left + 1, right: 1, checker: checker)
}
}
gugudan(left: 1, right: 1, checker: inRange)