What you''re doing seems fine to me, although I''m no expert.
I sometimes see something like class_eval used to write the
entire method instead. Most of what little I know of the topic comes
from the Little Schemer; here''s a pretty long way to make a
factorial function in Ruby using closures:
Y = lambda { |le| lambda { |f| f[f] }[ lambda { |f| le[ lambda { |x|
f[f][x] }]}]}
lil_fib = lambda { |f|
lambda { |n|
if n.zero?
1
else
n * f[n-1]
end
}}
Y[lil_fib][10] => 3628800
Continuations still screw me up big time. Chad Fowler and Jim Weirich
wrote this on it: http://onestepback.org/articles/callcc/
I still don''t really grok the concept. I''ve heard that Seaside
(a web
framework
using Smalltalk) makes heavy use of continuations. Maybe playing with
that would help make the concept more concrete?
Jim
On Mar 4, 9:17 pm, "Fefo"
<fbrubac...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hi all !! I''m fairly new to Rails programming and finding somewhat
> different n the approach than .NET programming I did previosuly. I
> found this blog post
:http://deadprogrammersociety.blogspot.com/2007/02/ruby-blocks-closure...
>
> It''s about closures and contiinuations, I get the basic idea about
> closures for example
> class GreetingGenerator
> def initialize(greeting)
> @block = lambda {|name| puts "#{greeting}, #{name}"}
> end
> def greet(name)
> @block.call name
> end
> end
>
> frenchGreeting = GreetingGenerator.new "Bonjour"
> englishGreeting = GreetingGenerator.new "Hello"
> southernGreeting = GreetingGenerator.new "Howdy"
> japaneseGreeting = GreetingGenerator.new "Ohayou"
> germanGreeting = GreetingGenerator.new "Guten Tag"
>
> frenchGreeting.greet "John"
> englishGreeting.greet "John"
> southernGreeting.greet "John"
> japaneseGreeting.greet "John"
> germanGreeting.greet "John"
>
> puts greeting # just checking that the `greeting` variable doesn''t
> exist in the main scope
> In this case, each block carries a little information with it
> ("greeting").
>
> This gives me the idea that clousures might be used in practice as a
> functional replacement for a class behaving as an abstract factory
> (the pattern). In this example the function makes a closure over the
> type of language (i.e. english, german) and then we pass to each
> function the parameters for the fabric to produce the output.
> Could anyone post some more comments and tell me if this idea is OK? I
> would love to know about continuations also. !
>
> Thanks & regards
> Federico
>
> Espero sus opiniones y comentarios tambien sobre por ejemplo
> continuations.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---