-
[ Kotlin ] 함수형 프로그래밍Kotlin 2020. 8. 3. 17:59
Index
Kotlin은 함수형 프로그래밍(FP: Functional Programming)과 객체 지향 프로그래밍(OOP: Object-Oriented Programmin)을 모두 지원하는 다중 패러다임 언어입니다.
함수형 프로그래밍 ^
함수형 프로그래밍은 순수 함수를 하용하자는 것에서 출발했습니다.
순수 함수를 조합해 상태 데이터 변경이나 부작용이 없는 루틴을 만들어 내며 이름 없는 함수 형태의 하나인 람다식을 이용해 함수를 변수처럼 매개변수, 인자, 반환값 등에 활용하는 고차 함수를 구성해 생산성을 높인 프로그래밍 방법입니다.
함수형 프로그래밍의 장점
- 프로그램을 모듈화 하여 디버깅이나 테스트가 쉽습니다.
- 간략한 표현식을 사용해 생산성이 높습니다.
- 람다식과 고차함수를 사용하면서 다양한 함수 조합을 사용할 수 있습니다.
순수 함수 ( pure function )^
부작용이 없고 외부 상태에 관여하지 않는 함수를 순수함수라고 합니다.
순수 함수의 특성 덕분에 순수 함수는 스레드에 사용해도 안전하고 코드의 테스트가 쉽다는 장점이 있습니다.
부작용(side-effect)이 없는 함수
- 동일한 입력 인자에 대해서 항상 같은 결과를 출력/반환합니다.
- 함수 외부의 어떤 상태도 바꾸지 않습니다.
왜 순수 함수를 사용하는가?
- 입력과 내용을 분리하고 모듈화 하므로 재사용성이 높아집니다. ( 여러 가지 함수들과 조합해도 부작용이 없습니다. )
- 특정 상태에 영향을 주지 않으므로 병행 작업 시 안전합니다.
- 함수의 값을 추적하고 예측할 수 있기 때문에 테스트, 디버깅 등이 유리합니다.
함수형 프로그래밍에 적용
함수를 매개변수, 인자 또는 반환 값에 적용할 때 사용합니다. ( 고차 함수 ) 또는 변수나 데이터 구조에 저장할 때 사용합니다. 이로 인해 코드의 유연성이 증가합니다.
일급 객체 ( First Class Citizen )^
Kotlin에서 함수는 1급 객체( = 1급 함수 )로 다룹니다. 1급 객체를 다룬다는 것은 권한이 많아지고 사용할 수 있는 범위가 넓어진다는 것을 의미합니다.
일급 객체는 아래와 같은 특징을 가집니다.
- 일급 객체는 함수의 인자로 전달할 수 있습니다.
- 일급 객체는 함수의 반환값에 사용할 수 있습니다.
- 일급 객체는 변수에 담을 수 있습니다.
1급 함수라 불릴 수 있는 함수들 중, 이름이 없는 경우엔 람다식이라고 부릅니다.
람다식 ( Lambda Expression )^
익명 함수의 하나의 형태로 이름 없이 사용 및 실행이 가능합니다. 고차 함수에서 인자로 넘기거나 결과 값으로 반환을 할 수 있습니다.
{ x, y -> x + y }
고차 함수 ( High-order Function )^
다른 함수를 인자로 사용하거나 함수를 결과 값으로 반환하는 함수를 말합니다. 일급 객체(일급 함수)를 서로 주고 받을 수 있는 함수가 고차함수가 됩니다.
람다식의 선언 순서를 마지막으로 보내면 호출 시 ( ) 밖에 식을 선언해도 됩니다.
출처
'Kotlin' 카테고리의 다른 글
[ Kotlin ] 익명 함수( Anonymous Functions )와 인라인 함수( Inline Functions ) (0) 2020.08.04 [ Kotlin ] 람다식 ( Lambda ) (0) 2020.08.04 [ Kotlin ] 함수 (0) 2020.08.03 [ Kotlin ] 자료형 - 비교, 검사, 변환 (0) 2020.07.29 [ Kotlin ] 자료형 - 논리 자료형과 문자형 (0) 2020.07.29