List
/\
a1 /\
a2 /\
a3 nil
foldr
f
/\
a1 f
/\
a2 f
/\
a3 zero
似ている*2。
foldrの最も汎用的な形がList*4。
↓
foldrの始対象がList*5。
↓
ListはF代数の圏におけるF始代数*6
List foldr f
/\ /\
a1 /\ <------ 抽象的 ------ a1 f
a2 /\ - 関数(射)が作れそう-> /\
a3 nil a2 f
/\
a3 zero