This does work:
puts print_call_and_return("parameter") { puts "block" }
I think the reason has to do with operator precedence. do/end
has higher precedence than {}
blocks.
puts print_call_and_return("parameter") do
puts "block"
end
is the same as
puts(print_call_and_return("parameter")){ puts "block" }