圏論勉強会#10 練習問題回答
一問目だけやりました。2問目が出来ない…。
練習問題
http://nineties.github.io/category-seminar/10.html#/38
練習として以下の様な事をやってみると良いと思います。
・二分木などの型函手及び融合則の導出
・map f∘map g=map (f∘g)などの法則の導出。
二分木などの型函手及び融合則の導出
二分木は以下のような函手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 にあります。