- In Collections, why does "add:" return the object being added, and
not "self"?
http://stackoverflow.com/questions/14047940/why-does-add-return-the-object-a...
Smalltalk-72's "vector" had that semantics more or less, when assigning a new value to a slot. Check out "to vector" in http://ftp.squeak.org/goodies/Smalltalk-72/ALLDEFS
I can see some reason for that semantics:
One perhaps was that because assignment was just a message send to a quoted variable, and you can define its behavior based on the receiver. When the receiver is a quoted vector, your assignment can update a slot of it. In many languages (not in Scheme however), the value of the assignment is the value to be assigned so you can say:
x := y := 0.
So, it is convenient to make the value of such message to be the value to be assigned.
Another is that it certainly is convenient to get back the removed element when you are removing an element from a collection. Making add: do the same makes it more symmetric.
Those are my thoughts about that exactly! Nice to see someone else appreciate add:/remove: answering the argument besides myself. :)