Wouldn't it make more sense to have fromInteger be `repeat .
fromInteger`? This would make it an instance for ZipList, not list.
You could even give a general instance for applicatives:
Very neat. I had tried using the standard Applicative instance for lists, as I wasn't aware of the ZipList newtype. Very useful.
On the question of whether any of this is a good idea, I found this discussion that mostly dismissed it based on the handling of literals (which if I understand it, is the source of my original question):