You are of course right in your analysis.

My point is more that using "block_given?" in itself is API smell. It 
means you have one method which can be called in two different ways, 
with two different behaviours.

The other main example in the core library (1.8.7+) is methods like 
'each' which return an Enumerator if you don't pass a block. I don't 
like that either.

-- 
Posted via http://www.ruby-forum.com/.