티스토리 뷰
면접을 보러 다니면서 함수형 프로그래밍이란 무엇인지에 대해 질문을 많이 받았다.
느낌적인 느낌이 아닌 좀 더 정확하게 알고 싶어 알아 보았다
함수형 프로그래밍은 무엇일까?
프로그램 패러다임의 한 종류이며, 코딩 스타일이다.
가장 중요한 것은 인풋에 대한 아웃풋이 있으면 이에 대한 데이터 흐름을 정해야 한다는 것이다
not functional
let name = 'Aairon'
let greeting = 'Hi, I'm '
console.log(greeting + name)
인사를 하는 문구와 이름을 넣어 콘솔에 나타나게 하는 코드이다
일종의 명령형 프로그래밍이라고 볼수있다
functional
function greet(name) {
return 'Hi, I'm ' + name
}
greet('Aairon')
위의 코드를 함수형으로 표현하면 이와 같다. name을 인풋으로 받아서 아웃풋으로 나타낸다
함수형 프로그래밍의 특징 중 하나는 사이드이펙트를 피하기 위해 pure fucntion이어야한다는 것이다
pure function이란?
함수가 인풋만을 받아서 아웃풋을 계산하고 return 해야 한다
Not pure
let name = 'Aairon'
function greet() {
console.log('Hi, I'm ' + name);
}
이처럼 인풋을 받지 않고 함수 밖에 있는 변수 또는 전역 변수를 사용하는 것은 pure하지 않다. 또한 return이 없는 것 또한 pure function이라고 보기 힘들다
pure
function greet(name) {
return 'Hi, I'm ' + name;
}
이와 같이 아웃풋을 return하고, 아웃풋에 영향을 주는 인풋이 있어야 한다
또 다른 특징으로 higer-order function이 있다
higher-order function이란?
다른 함수를 인풋으로 받거나 함수를 아웃풋으로 return하는 것이다. 함수형 프로그래밍에서 많이 사용한다
function makeAdjectifier(adjective) {
return function (string) {
return adjective + ' ' + string;
}
}
let coolifier = makeAdjectifier('cool')
coolifier('conference'); // 'cool conference'
coolifier에 makeAdjectifier의 반환되는 함수를 할당함으로써 coolifier를 실행 시 'cool conference'가 반환 되도록 하였다
'Record' 카테고리의 다른 글
webpack 간단 설명 (0) | 2020.04.07 |
---|---|
커맨드라인에서 webpack 명령어가 실행되지 않을 때 (0) | 2020.04.07 |
웹팩, 바벨 간단 정리 (0) | 2020.03.21 |
expo 배포하기 (0) | 2020.03.18 |
GIT refusing to merge unrelated histories 오류 해결 (0) | 2020.02.10 |