News for hackers. Stuff that matters.
Re:Lisp in Dart 2.0 by cwzwarich on Sunday September 23, 2018 @04:11PM (#18052905)
There are three distinct concepts that are often conflated:

1) The syntactic construct of a tail call.

2) Abstract space efficiency properties that guarantee asymptotic space usage of programs using tail calls.

3) The implementation techniques used to guarantee 2).

Even though the implementation techniques of 3) apply to all calls, the space efficiency properties in 2) are asymptotic and thus are only meaningful when applied to programs with unbounded recursive function invocations. Applying the techniques of 3) only to function calls that might potentially be involved in a recursive chain would still satisfy any of the standard definitions of 2).

See Will Clinger's paper Proper Tail Recursion and Space Efficiency (https://dl.acm.org/citation.cfm?id=277719) for details regarding the standard definition of "proper tail recursion" used in the Scheme spec and elsewhere.

Re:Lisp in Dart 2.0 by iuoershg on Monday September 24, 2018 @09:01AM (#18057283)
If so, can a purely functional language require no more than one stack frame?
Re:Lisp in Dart 2.0 by nailuj on Monday September 24, 2018 @11:31AM (#18058513)
It depends on what you mean by purely functional, the lambda calculus certainly doesn't require stack frames. Even better, you can implement any programming language without a stack. Stack frames are only a convenience feature for programmers after all (well, and many architectures probably do some hardware optimizations when using the stack related registers for stack things).