Reference. One Weird Trick to Untie Landin’s Knot
In this work, we explore Landin’s Knot, which is understood as a pattern for encoding general recursion, including non-termination, that is possible after adding higher-order references to an otherwise terminating language. We observe that this isn’t always true – higher-order references, by themselves, don’t lead to non-termination. The key insight is that Landin’s Knot relies not primarily on references storing functions, but on unrestricted quantification over a function’s environment. We show this through a closure converted language, in which the function’s environment is made explicit and hides the type of the environment through impredicative quantification. Once references are added, this impredicative quantification can be exploited to encode recursion. We conjecture that by restricting the quantification over the environment, higher-order references can be safely added to terminating languages, without resorting to more complex type systems such as linearity, and without restricting references from storing functions.
Cite
Cites 11 works (3 here)
With notes (3)
Syntax and Semantics of Quantitative Type Theory atkey-2018-syntax
I Got Plenty o’ Nuttin’ mcbride-2016-i
Integrating Linear and Dependent Types krishnaswami_integrating_2015
External (8)
- Compiling with dependent types (PhD dissertation) (2018)
- A monad for full ground reference cells (2017)
- Algorithmic games for full ground references (2012)
- L3: A Linear Language with Locations (2007)
- Semantics of types for mutable state (2004)
- Possible World Semantics for General Storage in Call-By-Value (2002)
- Typed closure conversion (1996)
- The Mechanical Evaluation of Expressions (1964)