[Haskell-cafe] How do I simulate dependent types using phantom types?