The object version of the Law makes the following legal: (defmethod (universal :count) () (loop for c in (send self ':child) sum (send c ':count))) We are allowed to send messages to the objects which are stored in the instance variables of self. This is another indication that the object version of the Law is good. The object version of the Law needs a little update: ---------------------------------------------------------- A method may send messages only to the following OBJECTS: the objects transmitted by the method's parameters (including self) and the immediate parts of self. Objects created by the method and non-local objects are viewed as being transmitted by arguments. self is the name of the first argument of the method. ---------------------------------------------------------- For the generic function terminology (e.g. CLOS) we replace the first line by ---------------------------------------------------------- All generic function calls inside a method must have one of the following objects transmitted by their first argument: ..... ---------------------------------------------------------- This way we will serve the Smalltalk, CLOS, C++ etc. communities. Does everybody agree with these improved object versions of the Law? If yes, please can Ian integrate them into the paper. -- Karl