2009
DOI: 10.1007/s10990-009-9042-z
|View full text |Cite
|
Sign up to set email alerts
|

Compilation of extended recursion in call-by-value functional languages

Abstract: This paper formalizes and proves correct a compilation scheme for mutually-recursive definitions in call-by-value functional languages. This scheme supports a wider range of recursive definitions than standard call-by-value recursive definitions. We formalize our technique as a translation scheme to a lambda-calculus featuring in-place update of memory blocks, and prove the translation to be faithful.

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2017
2017
2022
2022

Publication Types

Select...
3
3

Relationship

1
5

Authors

Journals

citations
Cited by 6 publications
(4 citation statements)
references
References 28 publications
0
4
0
Order By: Relevance
“…For a slightly more involved example, we consider in this subsection the sharing -calculus [Accattoli 2019, §4.1] (but see also [Hirschowitz et al 2009;Sewell et al 2008]). Following Accattoli, the syntax is given by…”
Section: Application: Binding Contextsmentioning
confidence: 99%
“…For a slightly more involved example, we consider in this subsection the sharing -calculus [Accattoli 2019, §4.1] (but see also [Hirschowitz et al 2009;Sewell et al 2008]). Following Accattoli, the syntax is given by…”
Section: Application: Binding Contextsmentioning
confidence: 99%
“…There are many techniques for implementing recursive definitions efficiently and effectively in call-by-value functional languages: among them, it is worth noting the 'in-place update tricks' outlined by Guy Cousineau et al (Cousineau et al 1987), and the more recent techniques due to Gérard Boudol and Pascal Zimmer (Boudol and Zimmer 2002), and Tom Hirschowitz et al (Hirschowitz et al 2003), or Peter Landin's classical trick (Landin 1964).…”
Section: Typing the Imperative Encodingsmentioning
confidence: 99%
“…The basis of their work is also a call-by-value calculus where evaluated recursive let-bindings take on the role of a dynamic heap, where subsequent bindings in a recursive group can see the result of previous ones, and where variables count as values (although not distinctively weak ones) (Hirschowitz et al 2003). Like us they are also able to avoid indirections.…”
Section: Related Workmentioning
confidence: 99%
“…When the real value of such a binding eventually becomes available, its topmost node is copied over to the pre-allocated block, which then takes over the role of the "real" value of the binding. Because run-time accesses to an uninitialized dummy block cannot be distinguished from valid ones, compile-time restrictions must be imposed on the right-hand sides of bindings with forward references to them; in (Hirschowitz et al 2003) this is assumed to be taken care of by a static analysis similar to the one reported in (Hirschowitz and Leroy 2002). The pre-allocation method also requires the sizes of objects to be statically known, which can be a severe restriction if one intends to define dynamic arrays, records coerced by subtyping, or function closures in recursive bindings.…”
Section: Related Workmentioning
confidence: 99%