b = proc {|x, y, z| (x||0) + (y||0) + (z||0) }
p b.curry[1][2][3]           
p b.curry[1, 2][3, 4]        
p b.curry(5)[1][2][3][4][5]  
p b.curry(5)[1, 2][3, 4][5]  
p b.curry(1)[1]              

b = proc {|x, y, z, *w| (x||0) + (y||0) + (z||0) + w.inject(0, &:+) }
p b.curry[1][2][3]           
p b.curry[1, 2][3, 4]        
p b.curry(5)[1][2][3][4][5]  
p b.curry(5)[1, 2][3, 4][5]  
p b.curry(1)[1]