[Haskell-cafe] Lightweight type-level dependent programming in Haskell