함수형 프로그래밍 - ChoDragon9/posts GitHub Wiki

함수형 프로그래밍

함수형 프로그래밍은 자료처리를 수학적함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍이다.

수학적 함수

함수란 두집합 X, Y에 대하여 X의 각 원소에 Y의 원소가 오직 하나씩 대응할 때, 이 대응을 X에서 Y로의 함수라고 하며, 이것을 기호로 f : X → Y와 같이 나타낸다.

함수의 성격

  • 모든 정의역은 대응되어야 한다.
  • 정의역은 두개 이상의 대응은 될 수 없다.
  • 공집합은 정의역과 공역이 될 수 없다.

범주론

  • 수학에서 함수
    • 입력과 출력이 있어야 함
    • 합성이 가능해야 함
  • 범주
    • 객체의 집합
    • 화살표
    • 정의역과 치역을 가르키는 화살표
    • 각 객체가 가지고 있는 항등 화살표
    • 한 화살표의 치역과 다른 화살표의 정의역이 같으면 합성할 수 있음 (f ⋅ g)(x) = f(g(x))
  • 컴퓨터 프로그램 재앙 4가지를 범주론 관점으로 해결
    • 실패 : A → Err(B), 실패의 경우를 포함하는 집합을 정의하여 해결한다.
      • 성공시 (f ⋅ g)(x) = f(g(x))
      • 실패시 (f ⋅ g)(x) = g(x), f(g(x)) => g(x)라는 의미는 f(x) = x와 같은 항등을 의미한다.
    • 의존성 : A → Pref(B), 애플리케이션의 설정 집합을 정의하여 해결한다.
    • 불확실성 : A → P(B), P는 모든 부분집합을 모은 멱집합이다.
    • 파괴성 : A → IO(B), IO는 입력/출력을 뜻하며, 다른 세계와의 상호작용할 때 발생하는 영향을 개념화한 것이다.

범주론 참고

identity 함수

https://emilvarga.com/posts/2016/08/01/using-identity-functions

함수형 프로그래밍 정리

참고자료