[Haskell-cafe] Using type-level programming to tag functions with time and space complexity