함수형 프로그래밍
함수형 프로그래밍
순수 함수를 조합해서 소프트웨어를 만드는 방식
-
프로그래밍 패러다임
-
명령형과 선언형
명령형은 어떻게 할 것인가(How)를 표현하고, 선언형은 무엇을 할 것인가(What)를 표현함
-
명령형
프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식
절차지향 : 수행되어야 할 연속적인 계산 과정을 포함하는 방식
알고리즘을 명시하고 목표는 명시 안 함
-
선언형
어떤 방법으로 해야 하는지(How)를 나타내기 보다 무엇(What)과 같은지를 설명하는 방식
함수형 : 순수 함수를 조합하고 소프트웨어를 만드는 방식(클로저, 하스켈, 리스프)
알고리즘을 명시하지 않고 목표만 명시
-
-
-
함수형 프로그래밍
-
왜 해야함?
프로그래밍 언어나 방식을 배우는 것이 아니라 함수로 프로그래밍 하는 사고를 배울 수 있음
다양한 사고 방식으로 프로그래밍을 바라볼 수 있기 때문에 더욱 유연한 문제해결이 가능해짐
-
명령형과의 비교
함수형은 계산을 수학적 함수의 조합으로 생각하는 방식으로 생각하는 방식이며 일반적인 프로그래밍 언어에서 함수가 특정 동작을 수행하는 역할을 담당하는 것과는 반대의 개념으로, 함수를 수행해도 함수 외부의 값이 변경될 수 없음
-
필요한 개념
-
1급 객체
다음과 같은 조건을 만족하는 객체
-
변수나 데이터 구조안에 담을 수 있음
-
파라미터로 전달할 수 있음
-
반환값으로 사용할 수 있음
-
할당에 사용된 이름과 관계없이 고유한 구별이 가능
-
동적으로 프로퍼티 할당이 가능
JS 에서 함수는 객체 이므로 1급 함수로 불림
-
-
고차 함수
람다 계산법에서 만들어진 용어로 아래 조건을 만족하는 함수
-
함수에 함수를 파라미터로 전달할 수 있음
-
함수의 반환값으로 함수를 사용할 수 있음
고차 함수는 1급 함수의 부분 집합 (Subset)
React 의 고차 컴포넌트(HOC) 는 컴포넌트를 사용하여 위의 조건을 만족하는 컴포넌트
-
-
불변셩
변할 수 없는 데이터
데이터 변경이 필요한 경우, 원본 데이터 구조를 변경하지 않고 그 데이터의 복사본을 만들어 작업을 진행함
const 는 Object 로 사용되는 경우 변경이 가능함
-
순수 함수
함수형 프로그래밍에 필요한 개념
아래 조건을 만족하는 함수
-
동일한 입력에는 항상 같은 값을 반환
-
함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 함(Side Effect 가 없어야 함)
-
-
데이터 변환방법
불변성 유지의 도구들이 필요함
JS 에서는 데이터 복사본을 만들기 위한 함수들을 제공함
-
합셩 함수
새로운 함수를 만들거나 계산하기 위해 둘 이상의 함수를 조합하는 과정
함수형은 여러 작은 순수 함수들로 이루어져있기 때문에 이 함수들을 연쇄적으로나 병렬로 호출해 더 큰 함수를 만드는 과정으로 전체 프로그램을 구축해야 함
-
-
구현하는 방법
함수형은 순수 함수(Pure Function)을 조합하고 공유 상태(shared state), 변경 가능한 데이터(mutable data), 부작용(side effect) 를 피하여 소프트웨어를 반드는 프로세스
함수형은 명령형이 아닌 선언형이며 App의 상태는 순수 함수를 통해 전달됨
-