Sarah, here's my take on it (though these are assumptions)

  1 - 1 # using send(:-)
  1 -1 # using send(:-)
  (1) -1 # also using send(:-)
  -1 # using send(:-@)
  +1 # using send(:+@)

  t = Time.now
  Time.now() - t # using send(:-)
  (Time.now) - t # same: using send(:-)
  Time.now - t # same: using send(:-)
  Time.now -t # executed as (Time.now) -t or t.send(:-@) which doesn't 
exist

  # Something interesting
  1.to_i -1 # uses send(:-@) but wants to pass that as an argument to 
Fixnum#to_i
  (1.to_i) -1 # uses send(:-)

Which makes me think that:

  Time.now -t # is trying to do:
  Time.now(-t) # which first needs to evaluate -t first (... which is 
t.send(:-@) ...)


So in conclusion, I don't think Fixnum is being treated any differently. 
It's just using a different method


--
Zach Moazeni
http://simplechatter.com
-- 
Posted via http://www.ruby-forum.com/.