From: Gavin Sinclair Date: 2002-09-06T10:36:59+09:00 Subject: Re: Ruby aesthetics > On Fri, Sep 06, 2002 at 02:08:19AM +0900, Tobias Peters wrote: >> This just came to my mind: Since ruby allows for nested singleton >> methods, you could probably write: >> >> def sqrt(x) >> o = Object.new >> def o.good_enough(g1,g2) >> ((g1 - g2).abs / g2) < .001 >> end >> def o.improve(guess) >> average(guess, x/guess) >> end >> def o.sqrt_iter(g1,g2) >> good_enough(g1,g2) ? g2 : sqrt_iter(g2, improve(g2)) >> end >> o.sqrt_iter(1.0, 2.0) >> end > > Most defs within defs can also be resolved using procs. > > def sqrt(x) > good_enough = proc { |g1,g2| ((g1 - g2).abs / g2) < .001 } > improve = proc { |guess| average(guess, x/guess) } > sqrt_iter = proc { |g1,g2| good_enough[g1,g2] ? g2 : sqrt_iter[g2, > improve[g2]] } sqrt_iter[1.0, 2.0] > end This was exactly my code that led to Tobias's example! Can anyone comment on the performance difference between procs and singleton definitions? > -- > Alan Chen Gavin