Module: MutualRecursion

Defined in:
lib/mutual_recursion.rb

Defined Under Namespace

Classes: MissingTailCallError, TailCall

Class Method Summary collapse

Class Method Details

.tail_callMutualRecursion::TailCall

Make a direct or indirect recursive call in tail position.

Yield Returns:

Returns:



44
45
46
# File 'lib/mutual_recursion.rb', line 44

def tail_call
  TailCall.new { yield }
end

.terminal_value(value) ⇒ MutualRecursion::TailCall

Indicates that the recursion has ended with the provided value.

Parameters:

  • value (Object)

    the terminal value

Returns:



54
55
56
# File 'lib/mutual_recursion.rb', line 54

def terminal_value(value)
  TailCall.new(value)
end