Peter Cho

함수형 프로그래밍 정리

2018.12.08 | 1 Minute Read

함수형 프로그래밍이란

함수형 프로그래밍은 추상화 단위를 함수로 합니다. 데이터 캡슐화와 은닉은 클로저를 통해서 합니다. 추상화된 함수들을 조립해서 고수준의 동작을 합니다. 함수형 프로그래밍은 기본형인 배열/객체/문자열을 사용하여 다형성을 추구합니다.

상태는 부수효과를 유발하기 때문에 직접변경을 차단하는 디자인 패턴을 사용합니다. 함수자(Factor)라는 컨테이너를 사용합니다. 값을 변경할 때는 새로운 함수자를 승급(lifting)합니다.

함수의 종류

  • 고차원 함수 : 함수를 리턴하고, 인자로 받는 함수
  • 클로저 : 스코프에 포함된 외부 바인딩을 켭쳐하는 함수
  • 커링 : 각각의 논리적 인자에 대응하는 새로운 함수를 반환하는 함수
  • Predicate : Boolean를 반환하는 찬반형 함수
  • Comparator : 값 두개를 비교하여 첫번째가 두번째보다 작을 때 음수/첫번째가 두번째보다 클때 양수/두 값이 같을 때 0을 반환하는 함수다.
  • 부분적용 : 부분적으로 실행을 마친 다음에 나머지 인자와 함께 즉시 실행한 상태가 되는 함수

함수형 자료구조

  • 함수자 : 값을 래퍼 안으로 승급(lifting)한 다음 수정하고 다시 래퍼에 넣을 목적을 염두에 둔 함수 매핑이 가능한 자료구조
  • 모나드 : 컨테이너 안으로 값을 승급하고 어떤 규칙을 정해 통제한다는 생각으로 자료형을 생성하는 자료구조
    • Maybe : Just, Nothing 두 하위형으로 구성된 빈 형식으로서, 주목적은 null 체크 로직을 효과적으로 통합하는 자료구조
    • Either : 절대로 동시에 발생하지 않는 두 값 a, b를 논리 적으로 구분 한 자료구조
      • Left (a) : 에러 메시지 또는 예외 객체를 담습니다.
      • Right (b) : 성공한 값을 담습니다.
    • IO : 모나드 체인에 승급하여 데이터 흐름을 모나드가 주도하게끔 맡겨, 순수한 부분과 불순한 부분을 분명하게 가른다는 자료구조