I guess it is because the literal '5' could be an Int or a Float, and the type
system doesn't know.
When I saw that the following does not work...::
bar :: (Show a) => a
bar = False
...it made a bit more sense. It seems that if a literal can be considered part
of a typeclass in more than one way, you can declare that literal to be of that
typeclass. However, if there is only one way for a literal to belong to a
typeclass, then you can't.