PS

Natural transformation

Natural transformation

Category  \mathcal{C}, \mathcal{D} について、natural transformation:

  •  \eta : F \rightarrow G

とは、以下から成る代数的構造 である:

  1. functor:  F : \mathcal{C} \rightarrow \mathcal{D} (domain)
  2. functor:  G : \mathcal{C} \rightarrow \mathcal{D} (codomain)
  3.   \mathcal{D} -morphism族:  (\eta_A : F(A) \rightarrow G(A))_{A \in \mathcal{C}} (components) *1

これらは次の要件をみたさなければならない:

  •  f: A \rightarrow B \Rightarrow G(f) \circ \eta_A = \eta_B \circ F(f) *2 (naturality)

Natural transformationを与えるときは、componentsだけ書いてしまえばいい。(domainやcodomainは自明に定まるので)

Natural isomorphism

Natural transformation  (\eta_A)_A が以下を満たすとき、natural isomorphismという。

このとき、(後で分かるように)

  •  \eta: \text{iso}

と書いてしまってOK。

Polymorphic functions

ある本が言うことには:

all polymorphic functions in functional programming languages are natural transformations.

ということでようやくスタート地点に立ったということ・・・。

参考文献

*1:transformationと呼んではいけないのだろうか。

*2:-morphismの要件である。

*3:Aの要件は省略