Am Mi., 5. Juni 2019 um 17:02 Uhr schrieb David Feuer <david.feuer@gmail.com>:
We already have the law

  read . show = id

which implies the injectivity and surjectivity conditions you specify.

I think this doesn't hold for the standard Read/Show instances for Double/Float: IEEE-754 NaNs have a sign bit and a payload, and  both parts are probably lost by the "read . show"-combination. The 2 infinities are probably OK, but what about -0 vs. +0?