함자(Functor)
범주(category)에서 범주로 가는 사상. 대상은 대상으로, 화살표는 화살표로 보내면서 항등 화살표(identity arrow)와 합성을 지킨다. 목록의 모든 원소(element)에 함수(function)를 적용하는 map, 기준점을 정한 공간에 기본군(fundamental group)을 붙이는 일이 모두 함자다.
목록의 모든 원소에 같은 함수를 적용하는 일을 프로그래밍에서는 map이라 합니다. f(x) = x + 1이면 map f [3, 1, 4] = [4, 2, 5]입니다. map은 '수를 수로 보내는 함수' f를 받아 '수의 목록을 수의 목록으로 보내는 함수' map f를 만듭니다. 그리고 두 규칙을 지킵니다. 아무것도 하지 않는 함수를 map하면 아무것도 하지 않고(map id = id), 두 함수를 이어 붙인 뒤 map하든 따로 map한 뒤 이어 붙이든 같습니다. g(x) = 2x라 하면 map (g∘f) [3, 1, 4] = [8, 4, 10]이고, map g (map f [3, 1, 4]) = map g [4, 2, 5] = [8, 4, 10]입니다. 목록을 두 번 훑든 한 번 훑든 결과가 같다는 뜻입니다.
이것을 일반화한 것이 함자(functor)입니다. 범주 𝒞에서 𝒟로 가는 함자 F는 𝒞의 대상 A마다 𝒟의 대상 F(A)를, 화살표
를 지키는 것입니다. 목록은 집합(set) A를 'A의 원소로 된 유한 목록 전체' List A로, 함수 f를 map f로 보내는, 집합의 범주에서 집합의 범주로 가는 함자입니다. 값이 하나 있거나 없는 상자 Maybe A도 함자입니다. 없는 값에 map하면 그대로 없음입니다. 함자는 구조를 지키며 옮기므로, 𝒞에서 가환하던 그림을 F로 옮기면 𝒟에서도 가환합니다. 두 길의 합성이 같으면 F를 씌운 두 합성도 같기 때문입니다.
순서도 범주이므로 순서 사이의 함자도 있습니다. 12의 약수(divisor)들을 나누어떨어짐으로 이은 범주에서 자기 자신으로 가는 사상을 생각해 봅시다. 화살표 a → b(a가 b를 나눔)는 화살표 F(a) → F(b)(F(a)가 F(b)를 나눔)로 가야 합니다. 순서에서는 두 대상 사이에 화살표가 많아야 하나라서 합성과 항등 화살표의 조건은 저절로 성립하고, 남는 조건은 '화살표가 있으면 옮긴 곳에도 화살표가 있다', 곧 단조성 하나입니다. 사상:
그림의 일곱 화살표만 확인하면 충분하다는 데 주목하세요. 1 → 12 같은 다른 화살표는 이 일곱 개의 합성이고, 함자는 합성을 지키므로 합성된 화살표는 저절로 옮겨집니다. 두 수가 같은 곳으로 가면 그 사이의 화살표는 항등 화살표로 갑니다. 12/n으로 보내는 사상은 모든 화살표를 거꾸로 보냅니다(a | b이면 12/b | 12/a). 방향을 뒤집어 합성 순서도 뒤집는 사상을 반변 함자(contravariant functor)라 하는데, 행렬(matrix)의 전치가 그 예입니다. 전치는 m×n 행렬을 n×m 행렬로 보내므로 화살표의 방향이 바뀌고,
함자의 가장 중요한 성질은 동형(isomorphism)을 동형으로 보낸다는 것입니다.
이 함자로 고정점(fixed point) 정리를 증명할 수 있습니다. 2차원 브라우어르 고정점 정리(Brouwer fixed-point theorem)는 원판에서 원판으로 가는 모든 연속 함수 f에 f(x) = x인 점이 있다는 정리입니다. 고정점이 없다고 해 봅시다. 그러면 점마다 f(x)에서 x 쪽으로 반직선을 그어 원주와 만나는 점을 r(x)라 할 수 있고, r은 원판에서 원주로 가는 연속 함수이며 원주 위의 점은 제자리에 둡니다. 원주를 원판에 넣는 함수를 i라 하면
함자는 흔합니다. 군에서 연산을 잊고 원소의 집합만 남기는 '잊는 함자(forgetful functor)' Grp → Set, 집합을 멱집합(power set)으로 보내고 함수를 '상(image)을 구하는 함수'로 보내는 함자, 대상이 하나인 범주로 본 모노이드(monoid) 사이의 준동형이 모두 함자입니다. 가역 행렬들의 곱셈 군에서 0이 아닌 실수(real number)들의 곱셈 군으로 가는 행렬식(determinant)도 그렇습니다(det AB = det A · det B, det I = 1). 함자끼리는 합성할 수 있고 항등 함자가 있으므로, 범주들을 대상으로, 함자들을 화살표로 두면 범주들의 범주가 생깁니다. 다만 모든 범주를 모으면 러셀의 역설(Russell's paradox)과 같은 크기 문제가 생기므로, 대상과 화살표가 집합을 이루는 '작은' 범주들만 모아 Cat이라 부릅니다.
흔한 오해 하나를 짚어 둡니다. 프로그래밍에서 함자를 '값을 담는 상자'로 설명하곤 하는데, 핵심은 상자가 아니라 map이 지키는 두 법칙입니다. 이 법칙은 컴파일러(compiler)가 확인해 주지 않습니다. 예를 들어 map할 때마다 목록을 뒤집는 연산은 타입(type)은 맞지만 map id가 항등이 아니므로 함자가 아닙니다. 거꾸로 상자처럼 보이지 않는 것도 함자입니다. 타입 r을 하나 정해 두면, 'r을 받아 A를 돌려주는 함수'들의 모임은, 함수 f를 뒤에 합성하는 연산으로 map하면 함자입니다.
이어지는 곳. 같은 두 범주 사이의 두 함자를 잇는 사상이 자연 변환(natural transformation)이고, 목록의 첫 원소를 꺼내는 함수가 그 예입니다. 어떤 함자가 한 대상의 화살표들과 같은 모양인지 묻는 것이 요네다 보조정리(Yoneda lemma)와 보편 성질(universal property)의 핵심이고, 서로 반대 방향으로 가며 짝을 이루는 두 함자가 수반 함자(adjoint functor)입니다. 자기 자신으로 가는 함자 가운데 '두 겹을 한 겹으로 펴는' 구조를 가진 것이 모나드(monad)입니다. 목록 함자는 대수적 자료형(algebraic data type)에서 재귀적으로 정의되는 타입의 대표적인 예이고, 모든 타입에 대해 똑같이 작동하는 map이 어떻게 가능한지는 다형성(polymorphism)에서 이어집니다. 기본군이 보여 준 '공간을 대수로 옮기기'는 위상수학과 표현 바꾸기에서 더 볼 수 있습니다. 공변(covariant) 함자와 반변 함자(contravariant functor)의 구별은 프로그래밍에서 하위 타입(subtype)의 공변·반변(contravariant)으로 그대로 나타나고(하위 타입과 변성(variance)), 열린 집합(open set)들의 순서에서 집합의 범주로 가는 반변 함자가 층의 출발점인 준층입니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 위상수학
… 기본군을, 기준점을 지키는 연속 사상마다 기본군 사이의 준동형을 대응시키는 이 규칙은 합성을 지키는함자의 대표적인 예이고, 에일렌베르크와 매클레인이 범주론을 세운 것도 이런 대응을 정확히 다루기 …
- 자동 미분
… 방향을 함께 보내는 사상 (x, v) \mapsto (f(x),\, Df_x v) 가 합성을 지키는함자가 됩니다. 전진 모드는 바로 이 함자를 계산의 한 걸음 한 걸음에 적용하는 것입니다.
- 대수적 자료형
… 가장 작은 해이고, 리스트 위의 되부름(fold)은 그 해가 갖는 보편 성질에서 나옵니다. 이 규칙이함자의 예이며, 이 관점이 범주론으로 이어집니다. 이어지는 곳. 합과 곱을 개수 대신 논리로 읽는 법, 곧 …
- 다형성과 시스템 F
… 말로 하면 자연성 사각형입니다. List는 타입 A를 List A로, 함수 f를 map f로 보내는함자이고, 공짜 정리는 다형 함수 r이 함자 List에서 List로 가는 자연 변환이라는 말과 같습니다. …
- 범주론
… 대해 한 번에 증명됩니다. 둘째, 분야 사이에 다리가 놓입니다. 범주에서 범주로 구조를 지키며 가는 사상을함자라 하는데, 기준점을 정한 위상수학의 공간에 군을 붙이는 기본군은 함자이고, 그래서 대수의 계산으로 …
- 모노이드
… 항등 화살표)이 모노이드의 두 조건과 글자 그대로 같습니다. 모노이드 준동형은 이런 범주 사이의함자이고, 거꾸로 어떤 범주에서든 한 대상 A에서 A로 가는 화살표들은 모노이드를 이룹니다. 그래서 범주를 …
- 자연 변환
… 같은 곳에 닿은 것입니다. 꺼내는 방법 η: , 함수 f: , 목록: . 정확히 말하면 이렇습니다. 두함자F, G: \mathcal C\to\mathcal D 가 있을 때, F에서 G로 가는 자연 변환 \eta: …
- 수반 함자
… ℝ을 가운데 두고, 올림은 그 왼쪽에, 내림은 그 오른쪽에 붙는 짝입니다. 순서는 범주이고 단조 함수는함자이므로, 이것이 가장 작은 수반 (adjunction)의 예입니다. 순서 사이의 이런 짝을, 1944년 …
- 요네다 보조정리
… X 는 'g를 앞에 붙이기' f\mapsto f\circ g 로 보냅니다. 화살표의 방향이 뒤집히는함자입니다. 이것은 'X의 눈으로 본 A'들의 모음입니다. 집합의 범주에서 원소 하나짜리 집합 1의 눈으로 …
- 모나드
… 얻으려면, 씨앗을 받아 새 씨앗을 돌려주어야 합니다. 세 경우 모두 재료가 같습니다. 값을 맥락에 담는함자T가 있습니다(Maybe A, List A, 그리고 '상태 s를 받아 값과 새 상태를 돌려주는 함수'). …
- 하위 타입과 공변·반변
… 순서는 두 대상 사이에 화살표가 많아야 하나인 범주입니다. 공변 생성자는 이 범주에서 자기 자신으로 가는함자, 곧 순서를 지키는 사상이고, 반변 생성자는 화살표를 뒤집는 반변 함자입니다. T \mapsto (T …
- F-대수와 fold: 재귀와 귀납의 범주론
… 함수는 '1의 원소가 갈 곳'과 'ℕ에서 나가는 함수'의 쌍입니다. 일반적으로 집합에서 집합으로 가는함자F가 있을 때, 집합 X와 함수 \alpha: F(X)\to X 의 쌍을 F-대수 (F-algebra)라 …
- 갈루아 연결
… 위쪽(오른쪽) 짝이라 부릅니다. 순서는 두 대상 사이에 화살표가 많아야 하나인 범주이고 단조 함수는함자이므로, 갈루아 연결은 순서에서의 수반 함자입니다. 그 페이지에서 본 올림 ⊣ 포함 ⊣ 내림, 상 ⊣ …
- 모노이드 범주와 끈 그림
… 나란히 놓은 대상 A\otimes B 와 두 화살표를 나란히 놓은 화살표 f\otimes g 를 정하는함자\otimes: \mathcal C\times\mathcal C\to\mathcal C 가 있고, …
- 층: 국소에서 전체로
… 포함 관계로 순서 지으면 범주이고, 준층은 그 범주에서 집합의 범주로 가며 화살표의 방향을 뒤집는함자입니다. 준층이 층 (sheaf)이려면, U를 덮는 열린 집합들 U = \bigcup_i U_i 가 …
- 토포스: 집합을 닮은 우주
… 옮기든 같은' 것입니다(자연 변환의 사각형). 이 범주는 순서 {오늘 ≤ 내일}에서 집합의 범주로 가는함자들의 범주입니다. 부분 대상은 S_0\subseteq X_0 , S_1\subseteq X_1 이면서 오늘 …
- 풍부화된 범주: 거리를 범주로
… 유클리드 거리( \ell^2 )는 둘 다 아닙니다. 풍부화해도 범주론의 도구는 그대로 일합니다. 풍부화된함자는 d(Fa, Fb)\le d(a, b) 인 사상, 곧 거리를 늘리지 않는 함수이고, 두 함자 사이의 자연 …