Just curious how Ruby resolves the ambiguity when calling a method with a list, 
and invoking the [] operator on a block:

def foo(i)
   p i
end

bar = lambda { |i| p i }

foo [1]
bar [1]

I'm assuming it's doing a little compile time checking, or lazily converting 
the call to the correct type at runtime?

Mike