English

Seeking Stability by being Lazy and Shallow

Programming Languages 2021-07-06 v2

Abstract

Designing a language feature often requires a choice between several, similarly expressive possibilities. Given that user studies are generally impractical, we propose using stability as a way of making such decisions. Stability is a measure of whether the meaning of a program alters under small, seemingly innocuous changes in the code. Directly motivated by a need to pin down a feature in GHC/Haskell, we apply this notion of stability to analyse four approaches to the instantiation of polymorphic types, concluding that the most stable approach is lazy (instantiate a polytype only when absolutely necessary) and shallow (instantiate only top-level type variables, not variables that appear after explicit arguments).

Keywords

Cite

@article{arxiv.2106.14938,
  title  = {Seeking Stability by being Lazy and Shallow},
  author = {Gert-Jan Bottu and Richard A. Eisenberg},
  journal= {arXiv preprint arXiv:2106.14938},
  year   = {2021}
}

Comments

Haskell Symposium 21

R2 v1 2026-06-24T03:41:21.557Z