After reading these discussions, I may have interpreted :compact in the wrong way, it's not intended for switching between single-line and multi-line displaying.
Also the philosophy of the 2-argument show(io::IO, t::MyType) is that it always returns an expression that can be evaluated, kinda like the constructor. You do not want compact mode to accidentally switch it to a multi-line printing.
Matthijs Cox
Scientific Software Engineer
Found another summary of all show/print options, which will be added to the Julia docs: discourse.julialang.org/t/how-to-display-a-sparse…
And this discussion: discourse.julialang.org/t/print-vs-two-argument-s…