Sorry for resurrecting an old thread, but while looking into this I also stumbled upon this issue which is relevant I think:
https://github.com/erlang/otp/issues/5937
The OTP team seems to be considering disabling these warnings, since there are legit use cases for improper lists:
- IO data as already explained above
- as a low-level performance optimization for libraries:
[a | b]takes less memory than{a, b}






















