Project

General

Profile

Feature #16945

Enable TCO by use of special form

Added by x3qt (Yury Polyakov) 6 months ago. Updated 6 months ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:98703]

Description

I would like to propose to create some way to enable TCO in ruby by use of special form, like (recur)[[https://clojure.org/reference/special_forms#recur]].

AFAIK TCO is not enabled by default because it messes with stack traces, so by implementing some special form we will avoid changing default behavior and provide opportunity to use it at the same time.

Example:

def fact(n, acc = 1)
  return acc if n <= 1
  recur(n - 1, n * acc) # recursive call with TCO enabled
end

Related issues

Is duplicate of Ruby master - Feature #12543: explicit tail call syntax: foo() then returnAssignedmatz (Yukihiro Matsumoto)Actions

Also available in: Atom PDF