Sylvain Joyeux wrote:
> &lamb un-lambdas lamb
> self.each &lamb
> is equivalent to
> self.each { |x| return x if yield(x) }
> which is why it works (and why it wouldn't if there was no difference
> between lambdas and blocks)

On the contrary, & un-blocks block:

  module Enumerable
    def find( &block )
      self.each { |x| return x if block.call(x) }
    end
  end

The looping is goingg on in the defintion of #each, in which a loop
contruct calls the anyonmous function (a lambda/block).

>
> while
> self.each { |x| lamb.call(x) }
> does not work as expected

That doesn't work b/c it's returning the result of the lamb.call not
the value of a successful x. has nothing to do with lambda vs. block.

T.