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.