합성

박준규·2024년 3월 7일

이 글은 책 The Dao of Functional Programming의 2장 1절 Composition을 정리한 것이다.

aa에서 bb로 가는 애로우 ff와, bb에서 cc로 가는 애로우 gg가 있을 때, aa에서 cc로 바로 가는 애로우를 합성(composition)이라고 한다.

두 애로우가 있을 때 어느 한 쪽의 도착점과 다른 한 쪽의 출발점이 같으면 두 애로우를 합성해서 세 번째 애로우를 만들 수 있다.

수식으로는 아래처럼 적는다.

h=gfh = g \circ f

위 수식을 아래처럼 읽는다.

"hh is equal to gg after ff."

하스켈에서는 아래처럼 적는다.

h = g . f

만약 ggjkj \circ k로 쪼갤 수 있다면 위 수식을 아래 수식으로 바꿔 적을 수 있다.

h=(jk)fh = (j \circ k) \circ f

합성은 아래 수식처럼 어느 것을 먼저 해도 결과가 같다. 이러한 성질을 결합성(associativity)이라고 한다.

h=j(kf)h = j \circ (k \circ f)

연습 문제 2.1.1.

아래와 같이 두 애로우가 있을 때

  • f:abf : a \rightarrow b
  • g:bcg : b \rightarrow c

이 두 애로우를 합성한 gfg \circ f는 다음과 같은 애로우의 연결을 유도한다.

((gf))((g \circ f) \circ -)
profile
코딩하는 물총새

0개의 댓글