In this question, @Viclib asked about using rewrite rules to exploit typeclass laws to eliminate some overloaded function calls:
Mind the following class:
class ListIsomorphic l where
toList :: l a -> [a]
fromList :: [a] -> l a
I also demand that toList . fromList == id. H...