> ...so, what do you guys think? Are they equivalent? Is there
> a performance difference? Are they even doing what I think
> they're doing?

They are not equivalent. Version A has to convert a block into
a Proc, which slows it down. Version B uses two calls instead
of just one, which slows it down.

Which one wins? See below. The difference in speed is
significant.

gegroet,
Erik V. - http://www.erikveen.dds.nl/

----------------------------------------------------------------

 $ cat test.rb
 require "ev/ruby"

 module A
   def self.foo
     yield
   end

   def self.bar(&lambda)
     foo &lambda
   end
 end

 module B
   def self.foo
     yield
   end

   def self.bar
     foo { yield }
   end
 end

 def test(mod)
   bm mod do
     100_000.times do
       mod.bar { :OK }
     end
   end
 end

 10.times do
   test(A)
   test(B)
 end

 $ ruby test.rb
        CPU    ELAPSED      COUNT  CPU/COUNT   LABEL
  18.926000  18.995000         10   1.892600   A
   2.264000   2.265000         10   0.226400   B

----------------------------------------------------------------