型レベル数値リテラルを使って型レベルFizzBuzz
型レベルFizzBuzz(及び、type familyにおけるガードの書き方) - claustrophobiaを見て自分も型レベルFizzBuzz書いてみました。 GHC 7.8以降で動作します。
Nat
を受け取るとFB
kindを持つ型を返すFizzBuzz
型族と、FB
に対するsingletonになるSFB
型を定義して、
あとは型からsingletonを生成してそれをprint
しています。
SNumberT 1 SNumberT 2 SFizzT SNumberT 4 SBuzzT SFizzT SNumberT 7 SNumberT 8 SFizzT SBuzzT SNumberT 11 SFizzT SNumberT 13 SNumberT 14 SFizzBuzzT SNumberT 16