STUDY/Swift

Swift 함수형 프로그래밍 패러다임과 그 장점

The Simpler 2018. 6. 29. 15:31

import UIKit


// 명령형 프로그래밍 패러다임 VS 함수형 프로그래밍과 패러다임


func doSomething() { print("do something") }


func doAnotherThing() { print("do another thing") }


// 명령형 프로그래밍 패러다임

func excuteAll() {

    doSomething()

    doAnotherThing()

}

excuteAll()


// 함수형 프로그래밍 패러다임

func excute(tasks: [()-> Void]) {

    for task in tasks {

        task()

    }

}

excute(tasks: [doSomething, doAnotherThing]) // *함수를 전달인자로 사용한다


///////////////////////////////////////////////////

// 두 수의 합을 구하고 싶은 경우


// 명령형 프로그래밍 패러다임

func sum(first: Int, second: Int) -> Int {

    return first + second

}

sum(first: 10, second: 5)


// 함수형 프로그래밍 패러다임

func sum(first: Int) -> ((Int) -> Int) {

    return { second in first + second}

}

sum(first: 10)(5) // 커링[Currying] 기법으로 전달인자를 하나만 두고 반환하면서 second in first + second 처럼 전달인자를 사용할 수 있다.




위에서 확인해본 간단한 차이 외에도 모나드[Monad], 함수객체[Functor], 필터[Filter], 맵[Map], 플랫맵[FlatMap], 리듀스[Reduce] 등의 기능을 사용할 수 있다. 


함수형 프로그래밍 패러다임으로만 프로그램을 작성하면 다음과 같은 장점이 있다.

- 여러 가지 연산 처리 작업이 동시에 일어나는 프로그램을 만들기 쉽다.

- 멀티 코어 혹은 여러 개 연산 프로세서를 사용하는 시스템에서 효율적인 프로그램을 만들기 쉽다.

- 상태변화에 따른 부작용에서 자유로워지므로 순수하게 기능 구현에 초점을 맞추어 설계할 수 있다.