프로그래밍 패러다임(Programming Paradigm)이다. 해당 프로그래밍 패러다임의 사고방식으로 코딩을 작성하는 스타일인 것이다.
side effect 피해서 순수함수로 표현하는 방식으로, 함수단위의 코드 재사용이 용이하다. 여기서 순수함수란 인풋만을 사용하여 아웃풋을 리턴하는 것이다
map.reduce.filter같은 고차함수 사용
고차함수란? 인풋으로 다른함수를 받거나/ 아웃풋으로 다른함수를 반환하는 것이다. for문, while문 대신에 고차함수를 사용한다.
immutable 불변성으로 의도치 않은 버그를 막을 수 있다
모든데이터를 불변데이터로 생각하여 map,filter,reduce로 새로운 데이터를 반환하여 사용한다
영속 데이터 구조
데이터의 사본이 계속 생겨 효율이 떨어지는 문제가 있었다
=> 구조 공유 방식. 트리구조 , map , hashmap으로 이를 개선한다
유명라이브러리 : mori, immutable.js, ramda, lodash, underscore
: 어떻게(How)의 관점에서 프로그래밍 하는 것
: 무엇(What)의 관점에서 프로그래밍 하는 것
<함수형 프로그래밍 지원 언어>
- Lisp 리스프
- Scalar 스칼라
- Closure 클로저 : JVM,CLR, 자바스크립트 엔진에서 실행
- haskell 하스켈 등...
function spaceToHeart(text) {
let result = "";
for (let i = 0; i < text.length; i++){
if(text[i] === " "){
result += "💔";
} else {
result += text[i];
}
}
return result;
}
.filter .replaceAll
처럼 함수명을 알고 있어야 한다는 단점이 있다function spaceToHeart(text) {
return text.replaceAll(" ", "💔");
}
Woldan Blog
인프런 - 자바스크립트로 알아보는 함수형 프로그래밍 (ES5)
An introduction to functional programming -Mary Rose Cook
[프로그래밍] 함수형 프로그래밍(Functional Programming) 이란? - [MangKyu's Diary:티스토리]