Ukážeme si volání s aktuálním pokračováním ja příkladu jednoduché rekurzivní funkce, faktoriálu. Faktoriál čísla n pro n > 0 je definován vzorcem n * f(n-1).
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
endVýpočet můžeme zachytit v proceduře
proc {|res| n * res }Jednou zachycený výpočet můžeme předat v kódu dál.
fact(n-1, proc {|res| done.call(n * res)})
def fact_cps(n, done)
if n == 0
done.call(1)
else
fact_cps(n-1, proc {|res| done.call(res * n)})
end
end
call_with_current_continuation { |current_continuation|
puts "This will be printed"
current_continuation.call
puts "This will never get printed"
}
