[Haskell-cafe] Need help with advanced type-level programming