function add(a, b) {
return a + b;
}
var f1 = function(a) { return a*a; };
var f2 = add;
function f3(f) {
return f();
}
console.log( f3(function() { return 10; } ));
console.log( f3(function() { return 20; } ));
일급함수와 순수함수를 특징을 이용해서 함수의 조합성을 높여나가는 것이 함수형 프로그래밍이다.
언제 호출해도 값이 같은 순수함수를 많이 만들고, 그 순수함수들을 값으로 들고다니면서 적절한 시점마다 평가를 하며 다양한 로직을 만드는것 -> 함수형 프로그래밍이다
function add_maker(a) { // 일급함수 특징중 하나: 함수를 리턴하는 함수, 인자를 받음)
return function(b) { //함수 안에 있는 함수를 '클로저', 함수를 값으로 다룸
return a + b;
}
}
var add10 = add_maker(10);
console.log(add10(20));
var add5 = add_maker(5);// 언제 호출해도 같은 인자에 대한 리턴값이 같음 : 순수함수 특징
function f4( f1, f2, f3 ) {
return f3(f1() + f2());
}
console.log(f4(
function() { return 2; },
function() { return 1; },
function(a) { return a * a }));
클로저
==요즘 개발 이야기==
실시간성(라이브방송,협업,댓글,메신저)
완성도(무한스크롤,...)
동시성
고가용성
병렬성
aws, python,
함수형 프로그래밍은 애플리케이션, 함수의 구성요소, 더 나아가서 언어 자체를 함수처럼 여기도록 만들고, 이러한 함수 개념을 가장 우선순위에 놓는다.
함수형 사고방식은 문제의 해결방법을 동사(함수)들로 구성(조합)하는것
/ 데이터(객체) 기준 / 객체형 프로그래밍
duck.moveLeft();
dog.moveRight();
/ 함수 기준 / 함수형 프로그래밍
moveLeft(dog);
moveRight(duck);