Forum: Ruby uestion about ruby continuations.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D0fce0d0c982f0ed2301ce51f7715153?d=identicon&s=25 Max Gonzih (Guest)
on 2013-11-26 14:19
(Received via mailing list)
Hi guys, I was playing with continuations in Scheme and decided to
port one puzzle from scheme to ruby. But it works in a different way.

Here is my code and explatations:
http://blog.gonzih.me/blog/2013/11/26/yin-yang-cal...

Can someone explain why is this happening?
Are there some limitations on how continuations can be used in ruby?
Thanks!
09a32175057418748822c587ac08c429?d=identicon&s=25 Abinoam Jr. (abinoampraxedes_m)
on 2013-12-06 06:31
(Received via mailing list)
Hi Max Gonzih,

THANKS GOD IT'S FRIDAY !!!

lambda do |yin, yang|
  yin.call yang
end.call(lambda {|cc| print "@"; cc }.call(callcc { |c| c } ),
         lambda {|cc| print "*"; cc }.call(callcc { |c| c } ) )

The path was:
1) A good explanation of the algorithm over here:
    - http://everything2.com/title/call%252Fcc+yin-yang+puzzle
2) An explanation of Scheme "let" here:
    -
http://www.cs.hut.fi/Studies/T-93.210/schemetutori...

===
Let is only syntactic sugar for an underlying lambda application:

((lambda (var1 var2 ... varn)
   body)
 exp1 exp2 ... expn)
===

And this made it easy for me to translate the algorithm into Ruby.

Best Regards,
Abinoam Jr.

PS: Run the "debug" version bellow and you will be able to see it "in
action".

# "Debug" version
lambda do |yin, yang|
  yin.call yang
end.call(lambda {|cc| print "@ - #{cc}\n"; sleep 0.1; cc }.call(callcc
{ |c| c } ),
         lambda {|cc| print "* - #{cc}\n"; sleep 0.1; cc }.call(callcc
{ |c| c } ) )

Abinoam Jr.
D0fce0d0c982f0ed2301ce51f7715153?d=identicon&s=25 Max Gonzih (Guest)
on 2013-12-06 08:45
(Received via mailing list)
Now I get it. Great job, thank you!
This topic is locked and can not be replied to.