본문 바로가기
면접,CS

[면접,CS] 함수형 프로그래밍

by Cafe Mocha 2023. 1. 5.

함수형 프로그래밍

  • 코드 작성 스타일
  • 선언형 코드
    • 결과값을 선언하는 것
    • filter 등으로 선언형 코드를 사용할 수 있음.
    • ex) CSS
  • 명령형 코드
    • 결과값에 “어떻게” 도달하느냐에 관한 것
    • Javascript 는 명령형 코드

 

함수형 프로그래밍의 특징

  • 순수 함수(Pure Function)
    • 함수에서 외부의 상태값을 참조하거나 외부의 상태를 변경하는 것은 순수 함수가 아니다.
    • 동일한 인자를 넣었을때 항상 동일한 결과를 리턴해야 한다.
  • 비상태, 불변성 (Stateless, Immutability)
    • 비상태, 불변성을 유지해야한다.
    // 틀린 코드
    let person = {name : "mocha",age:28};
    
    function increaseAge(person){
    	person.age = person.age +1;
    	return person;
    }
    
    // Stateless, Immutablility
    const person = {name : "mocha",age:28};
    
    function increaseAge(person){
    	return {...person, age:person.age+1};
    }
    
    //Javascript는 불변성 데이터 타입이 없기 때문에  Object.freeze를 통해 불변성 유지 가능
    const person = Object.freeze({name : "mocha",age:28});
    
    function increaseAge(person){
    	return Object.freeze({...person, age:person.age+1});
    }
    
    • no SideEffect
  • 선언형 함수 (Expressions Only)
    • no statements like if, switch, for 등등

일급함수 

  • 일차함수 : 함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현한다.
    • 예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 매개변수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있다.
  • 일급 객체 : 함수는 일급 객체이다.
    • 다음 조건을 만족하는 객체를 일급 객체라고 한다.
      • 무명의 리터럴로 생성할 수 있다. (런타임 생성이 가능하다.)
      • 변수나 자료구조(배열의 요소나 객체의 속성값)에 할당 할 수 있다.
      • 함수를 다른 함수의 인자로 전달될 수 있다.
      • 함수를 다른 함수의 결과로서 리턴할 수 있다.
  • 함수는 객체의 인스턴스이다
  • 함수를 정의할 때 실제로는 객체를 만드는 것이다.
  • 함수는 Object.prototype 객체의 프로퍼티를 상속받는다.
  • function helloWorld(){ console.log("hello world"); } console.log(typeof helloWorld); // --> function console.log(helloWorld instanceof Object); //-->true
  • 자바스크립트 함수는 함수 객체라고 하는 특수한 유형의 객체이다.

고차함수

  • 고차함수 : 고차 함수는 함수를 인자로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수
    • 고차함수의 예시
      1. 다른 함수를 인자로 받는 경우
      2. 함수를 리턴하는 경우
      3. 함수를 인자로 받고, 함수를 리턴하는 경우
  • 배열의 내장 고차 함수
  • 배열 고차 함수 메서드 : forEach, find, filter, map, reduce, sort, some, every

 

 

Reference


 

 

[JavaScript] 고차 함수와 콜백(Callback) - 일급 객체란? - 하나몬

❗️함수는 일급 객체이다. 자바스크립트에는 특별한 대우를 받는 일급 객체가 있다. 대표적인 일급 객체 중 하나가 바로 함수이다. 👉 다음 조건을 만족하는 객체를 일급 객체라고 한다. 무명

hanamon.kr

 

 

다시 쓰는 함수형 프로그래밍

> 참 좋은데 어떻게 표현할 방법이 없네... 오랜 기간 개발을 공부하게 되면서 여러가지 패러다임의 변화를 겪었는데 그 중에서 인상깊었던 것중에 하나는 객체지향 패러다임에서 함수형 패러다

velog.io

 

 

‘액션-계산-데이터’ 관점으로 보는 함수형 프로그래밍 패러다임 | 요즘IT

함수형 프로그래밍을 배우면서 깨달은 것이 있습니다. 실제 함수형 프로그래밍의 본질은 그렇게 어려운 것이 아닌데 이걸 설명하기 위해서는 대단히 어려운 일이 많았습니다. 아마 함수형 프

yozm.wishket.com