Scrap your boilerplate

ずっと前から存在は知っていたけど読まずにいた Scrap your boilerplate: a practical approach to generic programming を一通り読んだ.
http://research.microsoft.com/en-us/um/people/simonpj/papers/hmap/


これを利用した短いコードを書いてみた.
http://ideone.com/YawVd
書くならやっぱり型で遊ぶようなものかなーということで,与えた型のデータの数を返す関数を書いた.
最後の String 型に大してなんで 4 が返るのか最初わからなかったけど,

ということだった.
リストが再帰的なデータ型で,gmap 系の関数はネストした構造を辿らない (辿るのは everything のような traversal combinator) からこのようになる.
後で調べたら gtypecount として既に用意されていた…