> In message "[ruby-talk:5880] Re: succ but no pred? (& the MURKY award)" > on 00/10/27, hal9000 / hypermetrics.com <hal9000 / hypermetrics.com> writes: > > |OK... but for numbers it is trivial. Given an Integer#succ, should we > |not have an Integer#pred also? > | > |In fact, if we defined succ! and pred! also, these could serve as > |preincrement and predecrement operators (++x, --x) which some C > |programmers might miss. That is another issue. (There would still be no > |"post" versions, but these are more problematic anyway.) > > 2 points again: > > * predecessor for numbers can be defined in any case; not for > string in general. > > * Fixnums (actually Numbers in general) are immutable; so that succ! > and pred! cannot be defined. In fact, ++x and --x are operations > on variables, which cannot be accomplished by methods. I'm sorry, Matz. Of course that is true. > |And as for decrementing strings -- my intuition (which may be wrong!) > |says that it is no harder than incrementing... we would need to ensure > |that x.succ.pred == x and x.pred.succ == x for all but the boundary > |cases. > | > |And there must be boundary cases. Just as there must be at least one > |string that does not have a successor, likewise there must be at least > |one string without a predecessor. (I am not sure about null strings.) > > When I talked with Clemens about this topic before, I had hard time to > define detailed behavior. I'm not against to add pred for Integers > and Strings, iff pred behavior for strings can be defined precisely > (or code supplied ;-). Well, this is my opinion: I do not think it should be hard to define String#pred as the inverse of the existing String#succ. (I say this, never having looked at the code.) However: To define the "proper" behavior of String#succ (which may be different from current behavior!) -- I think that might be very hard. I will put String#pred on my to-do list. But not at the top. > |But I do like to see regularity -- if Lightbulb#screw exists, I want > |Lightbulb#unscrew to be there also. In fact, I think there are times > |when we should say, "Both or neither! But not just one." > > There might not be both ways; for example MD5 hash function. True.