The Fearless Journey [Draft]
Nick Webster, Marco Servetto, Michael Homer
TL;DR
Fearless Heart replaces fields with closures to form a minimal yet expressive object calculus suitable for both practical programming and language design. By adding reference capabilities, the authors extend Fearless to R-Fearless, enabling safe mutability and side effects while preserving equational reasoning, supported by a mechanised Redex model and a prototype compiler. The work formalises Fearless via well-formedness, reduction, and type systems, then extends it with RC/OC concepts (promotions, closure capture, and object capabilities) to show practical programming patterns like invariants, caching, and parallelism. Overall, the paper provides a principled, extensible foundation for building real-world systems and formal models within a lightweight object calculus.
Abstract
Existing minimal Object-Oriented models (OO), like Featherweight Java (FJ), are valuable for modelling programs and designing new programming languages and tools. However, their utility in developing real-world programs is limited. We introduce the 'Fearless Heart', a novel object calculus preserving FJ's minimal and extensible nature while being more suited for constructing complex, real-world applications. To illustrate the extensibility of the Fearless Heart, we extend it with Reference Capabilities (RC), creating R-Fearless. It supports mutability and other side effects while retaining the reasoning advantages of functional programming and gaining support for features that are well-known to be enabled by RC, like automatic parallelism, caching and invariants. R-Fearless is still minimal enough to allow further extensions. It is an ideal foundation for constructing both practical systems and formal models.
