One Weird Trick to Untie Landin's Knot

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Koronkevich, Paulette, Bowman, William J.
Format: Preprint
Published: 2025
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866909710068744192
author Koronkevich, Paulette
Bowman, William J.
author_facet Koronkevich, Paulette
Bowman, William J.
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2507_21317
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle One Weird Trick to Untie Landin's Knot
Koronkevich, Paulette
Bowman, William J.
Programming Languages
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.
title One Weird Trick to Untie Landin's Knot
topic Programming Languages
url https://arxiv.org/abs/2507.21317