I had some older code for this. Is this useful or not? See * https://hackage.haskell.org/package/type-iso-0.1.0.0/candidate/docs/Data-Types-Injective.html * https://hackage.haskell.org/package/type-iso-0.1.0.0/candidate/docs/Data-Types-Isomorphic.html