First-Order LazinessDistinguished Paper
In strict languages, laziness is typically modeled with explicit thunks
that defer a computation until needed and memoize the result.
Such thunks are implemented using a closure. Implementing
<em>lazy data structures</em> using thunks thus has several disadvantages:
closures cannot be printed or inspected during debugging;
allocating closures requires additional memory, sometimes leading to poor performance;
reasoning about the performance of such lazy data structures is notoriously subtle.
These complications prevent wider adoption of lazy data structures,
even in settings where they should shine.
In this paper, we introduce <em>lazy constructors</em> as a simple first-order
alternative to lazy thunks. Lazy constructors enable the thunks of a lazy data structure
to be defunctionalized, yielding implementations of lazy data structures
that are not only significantly faster but can easily be inspected for debugging.
Mon 13 OctDisplayed time zone: Perth change
13:40 - 15:20 | |||
13:40 25mTalk | Call-Guarded Abstract Definitional InterpretersDistinguished Paper ICFP Papers Kimball Germane Brigham Young University DOI | ||
14:05 25mTalk | Effectful Lenses: There and Back with Different MonadsDistinguished Paper ICFP Papers DOI | ||
14:30 25mTalk | First-Order LazinessDistinguished Paper ICFP Papers Anton Lorenzen University of Edinburgh, Daan Leijen Microsoft Research, Wouter Swierstra Utrecht University, Netherlands, Sam Lindley University of Edinburgh DOI Pre-print | ||
14:55 25mTalk | Multi-stage Programming with Splice VariablesDistinguished Paper ICFP Papers DOI | ||