この記事は Haskell Advent Calendar 2016 の9日目の記事です。 とか云ってもう11日ですね、ホントすみません。 8日目は @phi16_ さん、10日目は @bra_cat_ket さん でした。 Haskell を書き始めてはや5年、Monad や Applicative は使いこなしているけど、それ以上の抽象化のレパートリーを増やせていないと感じていました。 何となく「型レベルプログラミング」という言葉に興味はありつつも、具体的に何を学べば型レベルプログラミングができるようになるのか分からずにいたのです。 そんなあるとき、コマンドラインパーザーのライブラリを探している中でこんな記事を見つけました。 qiita.com タイトルに「宣言的な型レベルコマンドラインパーザー」とあります。このライブラリが内部で何をしているのか追っていけば型レベルプログラミングってや