Abstract:
Abstract. Tail calls are expected not to consume stack space in most functional languages. However, there is no support for tail calls in some environments. Even in such environments, proper tail calls can be implemented with a technique called a trampoline. To reduce the overhead of trampolining while preserving stack space asymptotically we propose selective tail call elimination based on an effect system. The effect system infers the number of successive tail calls generated by the execution of an expression, and trampolines are introduced only when they are necessary. 1
Citations
|
890
|
The Java Virtual Machine Specification
– Lindholm, Yellin
- 1996
|
|
188
|
Polymorphic Effect Systems
– Lucassen, Gifford
- 1988
|
|
93
|
Compiling Standard ML to Java bytecodes
– Benton, Kennedy, et al.
- 1998
|
|
53
|
Integrating functional and imperative programming
– Gifford, Lucassen
- 1986
|
|
51
|
No assembly required: Compiling Standard ML to C
– Tarditi, Acharya, et al.
- 1990
|
|
33
|
Proper tail recursion and space efficiency
– Clinger
- 1998
|
|
26
|
Static dependent costs for estimating execution time
– Reistad, Gifford
- 1994
|
|
22
|
Trampolined style
– Ganz, Friedman, et al.
- 1999
|
|
20
|
Compiling Dynamic Languages to the Java VM
– Kawa
- 1998
|
|
15
|
More types for nested data parallel programming
– Chakravarty, Keller
- 2000
|
|
15
|
Polymorphic time systems for es-timating program complexity. ACM Letters on Programming Languages and Systems
– Dornic, Jouvelot, et al.
- 1992
|
|
15
|
On the runtime complexity of type-directed unboxing
– Minamide, Garrigue
- 1998
|
|
13
|
Tail call elimination of the Java Virtual Machine
– Schinz, Odersky
- 2001
|
|
8
|
Compiling Scheme to JVM bytecode: a performance study
– Serpette, Serrano
- 2002
|
|
4
|
A new criterion for safe program transformations
– Minamide
- 2000
|
|
3
|
Cons should not cons its arguments, part II
– Baker
- 1995
|
|
1
|
Proving the correctness of reactive systems
– Hughes, Pareto, et al.
- 1996
|