From: Johannes Ahl-mann Date: 2005-02-13T08:55:00+09:00 Subject: Re: difficulty with blocks hi, sorry for answering my own post, but i am adopting ruby at an incredible rate. i know python quite well and it took me literally mere minutes to get the BASIC hang of blocks... i've been programming in ruby for 3 hours now and it already feels like home! not much cosier than python, but the block closures and the possibility of continuations drags me into ruby nonetheless ;-) well, i've got a rather satisfactory solution to my problem and would now like to ask whether my implementation can be considered "the ruby way" or if it feels rather strange to the senior rubiists (i.e. people who have programmed in ruby for more than 3 hours) *ggg* ### snip ### def fib_block &block a, b = 1, 1 while true: block.call(a) a, b = b, a+b end end require 'generator' def fibUpTo n, &block fibs = Generator.new do |g| fib_block {|val| g.yield val} end while (f = fibs.next()) < n block.call(f) end end def into(anArray) return proc {|val| anArray << val} end fibUpTo 20, &into(a = []) puts a ### snip ### thx and forgive me for answering my own questions. i really shouldn't do that ;-)) Johannes P.S.: what is it with the implicit blocks in ruby. i am aware that many people seem not to be explicitely passing the block into a function, but i really find that distracting and too much of a perl idiom. is my way alright, or was it unidiomatic?? P.P.S: is there a better way to write "fib_block {|val| g.yield val}"? maybe something like "fib_block.apply(g.yield)" or so. i guess not, but the repetition bothers me!