
If we accept partial constructors for NonEmpty then we can return to lists, can't we?
I can't be 100% sure about this, but I believe that the world with convenient `NonEmpty Char` would be safer than the world where people had to use `fromString` with any `NonEmpty Char`, even in the presence of a partial constructor for `NonEmpty`. Moreover, I also think that `fromInteger` and `fromIntegral` are *much* bigger threats to safety than `fromString` - so, either you figure out a way to disallow `fromInteger` in your code (and then you can also easily disallow `fromString` and `fromList`), or you let `fromInteger` remain and then `fromString` becomes the least of your problems. (In the former case you only need to spend a tiny additional amount of effort to stay safe, while in the latter case you gain convenience *and* make other parts of your code safer.)