型レベルで FizzBuzz

最近、 Type Family, Datatype Promotion, Kind Polymorphism といったあたりの話をいろいろ読んでいたので、練習に型レベルで FizzBuzz を書いてみた。

型レベルの計算の記述は、まだまだ冗長でスマートでない感じだけど、 GHC 7.6.1 で導入されたという Promoted Literals とか、 http://byorgey.wordpress.com/2010/07/19/typed-type-level-programming-in-haskell-part-iii-i-can-haz-typs-plz/ に書かれている Promoted Function? が実現すれば、型レベルでも値レベルとほとんど同じように記述 ( 共有 ) できる、というすごい事になるのだろうか。