Its suggested to think of singleton objects as a repository for a java programmers static methods. This, would suggest that these objects start with a capital letter, like a type. Indeed, I believe that a companion object has to start with a capital letter.
The problem is, in Java I (and others) always define (singleton) objects with a lowercase letter. Perhaps a mention of any Scala style rule here, and perhaps a mention that the capitalization of the companion object is a special case?
Agreed that the companion is an object with a special name (like constructors, main ...). In the end, syntactically you have the same mech as in java : Classname.staticmember ... Agreed it should be noted for Java programmers.
BTW, Is there an easy way to go from companion to object pool?
Related, but not necessarily in ch4 ...
The scala interpreter gives some bogus errors when using private constructor and companion object (factory methods). It says the companion cannot access the private constructor. (But I think it accepts de definitions)
I do not know if that's because it has no clear concept of the file it is loading definitions from? (as the companion object must be defined in the same file as the "companioned" (?) class).