Dave Thomas writes: <Stuff about chaining methods.> # It comes down to convenience. How often do you care is an array was # modified by a sort? Ever? It would be more efficient to write # Enumerable#sorted? to check, than to sort and see if it # changed. Contrast that with the number of times it's convenient to # chain another method to a sort (I do it all the time). It's # unfortunate that a rarely used side-effect means that I can't sort in # place reliably under these circumstances. # # gsub! and sub! give information that's fairly expensive to determine # any other way when they return nil. reverse! and sort! don't. # # I'd vote for an end to the convention. Isn't this just a vote in favor of supporting a form of functional programming (or at least functional composition) as the (new) default convention, except in special cases of gross inefficiency or clumsiness? If so, I'd like to cast a few recounted votes for this too. If it were not for way-too-serious-to-ignore backwards compatibility issues, I'd maybe like to see gsub!! and sub!! for the nil variants, and have gsub! and sub! follow the (hopefully) new convention. Conrad Schneiker (This note is unofficial and subject to improvement without notice.)