우아한테크코스 테코톡

레오의 함수형 프로그래밍

https://youtu.be/24tL6-YKz3I

레오의 함수형 프로그래밍

객체지향 물류센터 VS 함수형 물류센터

  • 객체지향 물류센터
    • 각각의 책임이 분리돼 있다.
    • 사람과 역할이 많이질수록 복잡해질 수 있다는 단점이 있다.
  • 함수형 물류센터
    • 각각의 사람들이 각자 정해진 역할만 한다.
    • 입력에 따라 결과를 출력한다.
    • 외부환경에 독립적이다.
    • 언제나 같은 입력에 같은 결과를 반환한다.
    • 순수 함수라고 부를 수 있다.
    • 장점
      • 각각 하는 일의 과정이 명확하다.
      • 같은 결과가 항상 반환됨을 보증할 수 있다.

함수형 프로그래밍

  • 값을 가지고 수학적 함수를 적용해 계산을 진행하는 패러다임의 한 종류

함수형 프로그래밍의 특징

  • 변하지 않는다 - 불변
    • 어떠한 대상이 있으면 그 대상이 변경되지 않는 걸 의미한다.
  • Null 이 없다
    • Optional -> 모나드 Haskell의 Maybe
    • 모나드
      • Monad, 어떤 타입에 대해 pure, compose 함수가 존재할 때 그 어떤 타입을 모나드라고 한다. 카테코리 이론을 적용하기 위해 합성할 수 있는 연산을 정의하고 추상화 하기 위해 쓰인다.
  • 선언적이다

함수형 언어 조건

  • 함수가 1급 객체(the First-class object)이여야 한다.
    • 일급 객체이려면 함수 리터럴(Functional Literals)가 존재해야 한다.
    • 리터럴
      • Literal: 변하지 않는 데이터 ex) 10, True, ‘a’
    • 람다식
  • 함수를 인수로 제공하고 받환할 수 있어야 한다.
    • 함수형 인터페이스
  • 함수 런타임시점 생성 가능
    • 함수형 언어의 조건인지 논란이 있다.

© 2020. All rights reserved.

SIKSIK