티스토리 뷰

반응형

면접을 보러 다니면서 함수형 프로그래밍이란 무엇인지에 대해 질문을 많이 받았다.

느낌적인 느낌이 아닌 좀 더 정확하게 알고 싶어 알아 보았다

 

함수형 프로그래밍은 무엇일까?

프로그램 패러다임의 한 종류이며, 코딩 스타일이다.

가장 중요한 것은 인풋에 대한 아웃풋이 있으면 이에 대한 데이터 흐름을 정해야 한다는 것이다

 

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'가 반환 되도록 하였다

 

 

출처 : https://youtu.be/e-5obm1G_FY

반응형
댓글