Functional Programming

[TOC]

프로그램 패러다임

명령형 프로그래밍

선언형 프로그래밍

함수형 프로그래밍

함수형 프로그래밍의 배경

명령형 프로그래밍과 비교

  명령형 프로그래밍 함수형 프로그래밍
프로그램이란? 프로그램은 명령의 수행이다. 프로그램은 함수의 계산이다.
중점적 시각 어떻게(How to)에 초점 무엇(What)에 초점
이론적 배경 튜링 머신 람다 계산식
주요 프로그래밍 언어 C, Java, … Scheme, Haskell, ML, Erlang, Elm, …

1급 객체(First Object, 1급 시민)란?

현실의 1급 시민

프로그램의 1급 객체

다른 객체들에게 적용가능한 연산을 모두 지원하는 객체로 다음과 같은 특징이 있다.

자바스크립트의 함수가 1급 함수인 이유

1급 함수로 할 수 있는 것들

//부분 적용 함수 예
function add(a){
	return function(b){
		return a+b;
	}
}

var addFunc = add(1);
var result = addFunc(2); // result : 3;

1급 함수

고차 함수(High-Order Function)

불변성(Immutablility)

순수 함수(Pure function)

합성 함수

var add = (a, b) => a + b;
var square = (x) => x * x;

// ? reduce 확인
var compose = (...fns) =>
	fns.reduce(
		(prevFn, nextFn) =>
			(...args) => nextFn(prevFn(...args)),
		value => value
	)

var compute = compose(add, square);
compute(1, 2); // 9가 나와야하는데 실제 실행시 NaN이 나온다. 추후 확인

함수형 프로그래밍을 배워야하는 이유

참고