#!/usr/bin/ruby
#
## Block recursion via __BLOCK__
#
{ |n|
n > 1 ? (__BLOCK__(n-1) * n)
: 1;
}(5).to_s.say;
#
## Function recursion via __FUNC__
#
func (n) {
n > 1 ? (__FUNC__(n-2) + __FUNC__(n-1))
: (n);
}(8).to_s.say;
__END__
#
## Infinite block recursion
#
{
"Hello world!".say;
__BLOCK__.run;
}.run;