That's actually not "obvious". That's a property you have to explicitly demand. For example, you could have a tree structure that you can convert to a list and that you can also construct from a list, but where this identity doesn't necessarily hold.
– CubicAug 21 '15 at 3:07

Yes, it could. Considering that, I guess the only right answer would be writing a specific rule inside each instance. Is that possible?
– MaiaVictorAug 21 '15 at 3:47

1

@NathanDavis I expect toList . fromList :: ListIsomorphic l => [a] -> [a] (which has an ambiguous "middle instance", but only one), so I don't think there can be two different instances involved.
– Daniel WagnerAug 21 '15 at 5:54