개요
함수형 프로그래밍은 자료처리를 수학점 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임이다. 프로세스가 함수단위로 순서대로 진행된다. 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르며, 프로그래머가 모든 것을 예측하고 통제해야 하므로 세가지 원칙이 있다.
원칙
-
입출력이 순수(순수함수)
반드시 하나이상의 인자를 받아 결과값을 리턴한다.
-
부작용 및 부산물이 없어야 함 (no side effect)
바꾸고자 하는 변수 외에는 변화가 있어서는 안된다.
-
함수와 데이터 중점 사고
핵심개념
-
순수함수(pure function)
동일한 입력엔 항상 같은 값을 리턴한다. 함수의 리턴은 오로직 그 함수의 입력값에 의존한다. 함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 한다.
즉, side effect가 없이 Self contained 되어야 한다. = 오로지 함수는 출력만 수행한다.
-
Function composition(합성함수)
둘 이상의 함수를 조합하는 과정이다. 함수형 프로그램은 순수 함수들의 집합으로, 순수 함수들을 병렬 또는 연쇄적으로 호출해 더 큰 함수를 만드는 과정으로 프로그램을 구축해야 한다.
순함수를 엮으려면 고차원 함수⁽¹⁾가 필요하다.
-
상태 공유
공유되는 스코프 안에 존재하는 모든 변수, 객체, 메모리공간이거나 스코프간에 전달되는 객체의 특징이다. 다른 객체에 속성을 추가하는 것으로써 스코프 안의 객체가 공유된다.
함수형 프로그래밍은 상태 공유를 피하고, 대신에 변하지 않는 데이터 구조와 순수계산을 이용해 새로운 데이터를 기존의 데이터로부터 뽑아낸다.
-
불변성
무분별한 상태의 변경을 피하고, 이런 변화를 추적함으로써 코드를 제어한다.
- 고차원 함수 : 함수를 인자로 받아 결과로 함수를 반환한다.
- 1등급 객체 : 자료구조에 저장되고, 인자로 전달할 수도
결과로 반환받을 수도 있으며, 함수가 실행되는동안 새로운 함수가 만들어질 수 있는 객체
'IDE & Framework' 카테고리의 다른 글
[이론] 프로토콜 프로그래밍이란? (0) | 2021.03.07 |
---|---|
[이론]객체지향 프래그래밍(OOP) 이란? (0) | 2021.03.07 |