Solving the Funarg Problem with Static Types
The difficulty associated with storing closures in a stack-based environment is known as the funarg problem. The funarg problem was first identified with the development of Lisp in the 1970s and hasn't received much attention since then. The modern solution taken by most languages is to allocat...
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | The difficulty associated with storing closures in a stack-based environment
is known as the funarg problem. The funarg problem was first identified with
the development of Lisp in the 1970s and hasn't received much attention since
then. The modern solution taken by most languages is to allocate closures on
the heap, or to apply static analysis to determine when closures can be stack
allocated. This is not a problem for most computing systems as there is an
abundance of memory. However, embedded systems often have limited memory
resources where heap allocation may cause memory fragmentation. We present a
simple extension to the prenex fragment of System F that allows closures to be
stack-allocated. We demonstrate a concrete implementation of this system in the
Juniper functional reactive programming language, which is designed to run on
extremely resource limited Arduino devices. We also discuss other solutions
present in other programming languages that solve the funarg problem but
haven't been formally discussed in the literature. |
---|---|
DOI: | 10.48550/arxiv.2108.07389 |