To add to the answers here already, you can object "but what does it matter, what things are on my list, it does not have any of them!"
Well, firstly, it is easy to construct situations in which it is not clear whether it is empty or not, and, in any case, type checking does not like to look at values, it just wants to look at types. This simplifies the job because it means that when it comes to values, you can be sure that you already know all the types.
Secondly, it really matters what it is, even if it is empty:
ghci> print ([] :: [Int]) [] ghci> print ([] :: [Char]) ""
Ben millwood
source share