Phantom types are useful for dealing with data, that has identical representations but isn't logically of the same type.
A good example is dealing with currencies. If you work with currencies you absolutely never want to e.g. add two amounts of different currencies. What would the result currency o...