TemplateHaskellというGHC拡張を使えばできるよ!