Yukihiro Matsumoto wrote: > Alternative plans: > > (1) remove bang methods altogether. Backwards compatibility is lost. > (2) current bang methods are bad because they work most of the > cases, and fail if no change has made. thus let us make bang > methods return something other than self, boolean for example, > to fail always. this forces no chaining of bang methods. Tolerable, but only because it removes the element of surprise. > (3) introduce "real" multiple return values ala common lisp, and let > the first returned value as the receiver and the second return > value is boolean value to denote success/failure. Ick. Ever wonder why other languages don't do this? > (4) add some kind of reference counting, and if the receiver is > referenced from only one place, modify the receiver in place, to > gain performance. Oooo, pretty! Seems like it might defeat the goal of optimizing things, unless the reference counting could reduce the overall impact of garbage collection. When I'm playing with simple algorithms, disabling garbage collection seems to yield a guaranteed 20% speedup, even for relatively short tasks (< 30 sec.). Another option: (5) add alternative destructive methods with different names that always return self. This is the change with the least impact, but I realize it is ugly. -- Glenn Parker | glenn.parker-AT-comcast.net | <http://www.tetrafoil.com/>