I\'m not making sense of the following behavior (see also in this SO thread):
def def_test puts \'def_test.in\' yield if block_given? puts \'def_test.o
block_given? considers def scope, not lambda scope:
block_given?
def
lambda
def test l = lambda do yield if block_given? end l.call end test { puts "In block" }