函手
functor。関手。共變函手 (covariant functor)
「關手」とは書かない
圈 C から圈 D への對應 F で、射の演算を保存するものを函手$ F:{\bf C}\to{\bf D}と呼ぶ 圖式的に描けば、$ a\xrightarrow{f}bが$ F(a)\xrightarrow{F(f)}F(b)に對應する
恆等射$ a\xrightarrow{\rm id}aは$ F(a)\xrightarrow{F({\rm id})}F(a)に對應する $ a\xrightarrow{f}b\xrightarrow{g}cつまり合成射$ a\xrightarrow{f;g}cは$ F(a)\xrightarrow{F(f;g)=F(f);F(g)}F(c)に對應する code:mmd
flowchart LR
subgraph C
a(a)---f--->b(b)---g--->c(c) end
subgraph D
end
a-.F.->Fa
b-.F.->Fb
c-.F.->Fc
f-.F.->Ff
g-.F.->Fg
fg-.F.->FfFg
%% 恆等射の對應も重要だが省略する
反變函手 (contravariant functor)$ F:{\bf C}^{\rm op}\to{\bf D} ScalaScala.iconに於いては、型 F[T] と型構築子 def F[T](t: T): F[T] が函手であるとは、函數 f が def f(a: A): B = b である時に、F[A](a).map[B](f) == F[B](b) となる method def map[B](f: A => B): F[B] が定義されてゐる事を言ふ 恆等函數と合成函數は當然保存する樣に定義する
この型でない map method を定義する事はまづ無い筈なので、map method が定義されてゐればたぶん函手である 例 : Seq 型。List 型。Option 型。Try 型。Either 型。Future 型
fold method、withFilter method、flatMap method、for 內包表記等はこの應用として在るので、函手の image は持っておかう fold method が有れば Foldable 型
flatMap method が有れば Monad 型
更に withFilter method が有れば MonadPlus 型
RubyRuby.icon の Enumerable とは似てゐるが異なる發想が基になってゐる事を讀み取って欲しい 型 class として定義すると
函手$ F:{\bf C}\to{\bf D}の內の各對象每の射の對應$ {\bf C}(X,Y)\to{\bf D}(F(X),F(Y))が全て全射である場合を言ふ 函手$ F:{\bf C}\to{\bf D}の內の各對象每の射の對應$ {\bf C}(X,Y)\to{\bf D}(F(X),F(Y))が全て單射である場合を言ふ 充滿忠實函手 (fully faithful functor) 函手$ F:{\bf C}\to{\bf D}の內の各對象每の射の對應$ {\bf C}(X,Y)\to{\bf D}(F(X),F(Y))が全て全單射である場合を言ふ 圈$ \bf Cの充滿部分圈とは、部分圈 (subcategory)$ \bf D_{\subset{\bf C}}であって、全ての對象に於いて$ {\bf D}(A,B)={\bf C}(A,B)であるものを言ふ 本質的單射 (essentially injective)
函手$ F:{\bf C}\to{\bf D}が$ \forall {c_1,c_2}_{\in|{\bf C}|}(F(c_1)\cong F(c_2)\supset c_1\cong c_2)ならば本質的單射であると言ふ 對象上單射 (injective on objects) 同型ではなく等式$ \forall {c_1,c_2}_{\in|{\bf C}|}(F(c_1)=F(c_2)\supset c_1=c_2)が成り立つならば、卽ち函手の內の對象閒の寫像$ |{\bf C}|\to|{\bf D}|が單射ならば對象上單射であると言ふ 本質的全射 (essentially surjective。dense)
函手$ F:{\bf C}\to{\bf D}が$ \forall d_{\in|{\bf D}|}\exist c_{\in|{\bf C}|}(F(c)\cong d)ならば本質的全射であると言ふ 對象上全射 (surjective on objects)
同型ではなく等式$ \forall d_{\in|{\bf D}|}\exist c_{\in|{\bf C}|}(F(c)=d)が成り立つならば、卽ち函手の內の對象閒の寫像$ |{\bf C}|\to|{\bf D}|が全射ならば對象上全射であると言ふ 本質的全射かつ忠實
pro 函手$ \phi:{\bf C}\nrightarrow{\bf D} とは函手$ \phi:{\bf D}^{\rm op}\times{\bf C}\to{\bf Set} を言ふ。函手$ \hat\phi:{\bf C}\to[{\bf D}^{\rm op},{\bf Set}] とも見做せる anafunctor