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).
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