[Haskell-cafe] Type-level programming problem