Skip to content

Instantly share code, notes, and snippets.

@nattybear
Last active July 15, 2022 05:50
Show Gist options
  • Save nattybear/f6b436ae1e82c38e34e5d664a70a3268 to your computer and use it in GitHub Desktop.
Save nattybear/f6b436ae1e82c38e34e5d664a70a3268 to your computer and use it in GitHub Desktop.
프로그래머를 위한 카테고리

Category Theory for Programmer by Bartosz

카테고리에서 주로 사용하는 도구는 아래와 같다.

  • Abstraction
  • Composition
  • Identity

카테고리를 이루는 요소는 아래 두 개이다.

  • Object
  • Arrow(Morphism)

카테고리에서 어떤 객체를 점으로 표현할 수 있다. 점과 점을 화살표로 연결할 수 있다. 이때 이 연결 또는 길을 morphism 이라고 한다.

x

점 a와 점 b를 연결하는 morphism은 없을 수도 있고 하나만 있을 수도 있고 여러개 있을 수 있다. 점 a에서 출발해 다시 자기 자신으로 돌아오는 morphism도 여러개 있을 수 있다.

아래와 같이 a, b, c 점 3개가 있고 점들을 연결하는 길 f, g가 있을 때

x

a에서 c로 한번에 가는 길 g . f가 있다.

x

이 한번에 가는 길을 합성 composition 이라고 한다.

점 a에서 출발해 다시 자기 자신에게 돌아오는 길을 identity 라고 한다.

이때 아래와 같은 성질이 있다.

id . f = f
g . id = g

x

x

아래와 같이 a, b, c, d 점 3개를 잇는 길 f, g, h가 있을 때

f :: a -> b
g :: b -> c
h :: c -> d

아래와 같은 성질이 있다.

h . (g . f) = (h . g) . f

이러한 성질을 associativity 라고 한다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment