圏論勉強会#10 練習問題回答

一問目だけやりました。2問目が出来ない…。

練習問題
練習として以下の様な事をやってみると良いと思います。
・二分木などの型函手及び融合則の導出
・map f∘map g=map (f∘g)などの法則の導出。

http://nineties.github.io/category-seminar/10.html#/38

二分木などの型函手及び融合則の導出

二分木は以下のような函手F_Aに対応する。
F_A(X) = A + X × X

Fから導出される型函手Tは以下のようになる。(= 
T(A) = T_A
T(f) = (|in_B o F(f,1_B)|)
     = (|[Leaf, Node] o (f + 1_B × 1_B)|)
     = (|[Leaf, Node] o (f + 1_B)|)
     = (|[Leaf o f, Node]|)

SMLだと

   fun fmap f = foldr Leaf (Node o f)

SMLのコード全体は gist にあります。