Introduction The other night, I came across the problem of implementing autovivication in Ruby hashes. The solution I devised exemplifies an elegant and practical use of the Y combinator, and it seemed worth sharing. For those of you who just want the solution, here it is: # Define the Y combinator module YCombinator def y_comb(&generator) proc { |x| proc { |*args| generator.call(x.call(x)).call(*