From: Robert Klemme Date: 2009-10-31T00:05:10+09:00 Subject: Re: Ruby doesn't implement x++ for Fixnum's because ??? 2009/10/30 RichardOnRails : > I'll correct my errors and probably have a new theory subsequently. IMHO the story goes like this: absence of postfix ++ and -- is a consequence of the fact that numeric types are immutable in Ruby which makes an assignment necessary for these operators. Although that would be doable, it would not immediately be obvious when looking at "foo++". On the other side, "foo += 1" makes the assignment obvious while still being pretty concise (you do not have to write "foo = foo + 1"). Which brings us to the question: what is the advantage of immutable numbers? First, it avoids errors that could be caused by aliasing (two objects refer the same object, one of them changes it, it changes for the other one as well without being expected). Then, it is quite natural if you consider mathematical numbers: they cannot change. Additionally, the expression "1" can always refer to the same object (in reality it's a bit different but from a Ruby programmer's perspective the difference is not noticeable) which in fact makes using numeric constants very efficient (as opposed to the expression "'foo'" which constructs a new String instance on every invocation, albeit with a shared char array underneath which eases the pain a bit). This in turn makes integer math pretty efficient because if numbers were mutable Ruby would have to create a new object for every result of an operator evaluation. I am not saying that Ruby is ideal for number crunching but it could be significantly slower if certain design decisions would have been made differently. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/