:: (Coercible s a, Coercible t b) => Iso s t a b package:optics-core

Data types that are representationally equal are isomorphic.
>>> view coerced 'x' :: Identity Char
Identity 'x'
Capture type constraints as an isomorphism. Note: This is the identity optic:
>>> :t view equality
view equality :: a -> a