Why does the Haskell :type command only sometimes print the type-class?
Haskell infers the most specific type applicable. If the most specific it can get is a typeclass, that's what it produces; if it can infer an explicit type, it will.
Should I expect type-class inference as well as type inference?
Maybe the type-class is inferred where possible, but not always printed?
Typeclasses are not independent of types, and are not inferred separately from types. If you want to know what typeclasses a type is a member of, use :info.
Haskell supports polymorphism: a bound expression does not need to have a single specific type, it can apply to multiple types and adapt itself to the type at its use site. Typeclasses are part of how this is accomplished. So if a bound expression is polymorphic, you will see its type expressed in terms of type variables, possibly with typeclass contexts.
--