From: bob_sidebotham@... (Bob Sidebotham) Date: 2001-11-04T07:10:45+09:00 Subject: [ruby-talk:24299] yield vs. call? I'm a bit puzzled whether there is any semantic difference between the two code fragments, below: # Example from Programming Ruby def fibUpTo(max) i1, i2 = 1, 1 # parallel assignment while i1 <= max yield i1 i1, i2 = i2, i1+i2 end end fibUpTo(1000) { |f| print f, " " } puts VS. # Modified example from Programming Ruby def fibUpTo(max, blk) i1, i2 = 1, 1 # parallel assignment while i1 <= max blk.call i1 i1, i2 = i2, i1+i2 end end fibUpTo(1000, proc { |f| print f, " " }) puts These seem to be equivalent as far as I can tell. Is the original example just syntactic sugar for the other version, or are there subtle reasons why a yield statement and magic associated block (I'm not sure what you call that) is necessary? Just curious! Bob Sidebotham