module MutualRecursion

Public Instance Methods

tail_call() { || ... } click to toggle source

Make a direct or indirect recursive call in tail position.

@yieldreturn [MutualRecursion::TailCall] a tail call @return [MutualRecursion::TailCall] a non terminal tail call

# File lib/mutual_recursion.rb, line 44
def tail_call
  TailCall.new { yield }
end
terminal_value(value) click to toggle source

Indicates that the recursion has ended with the provided value.

@param [Object] value the terminal value @return [MutualRecursion::TailCall] a terminal tail call that will return the given value

# File lib/mutual_recursion.rb, line 54
def terminal_value(value)
  TailCall.new(value)
end