English

Quantifying and Explaining Immutability in Scala

Programming Languages 2017-04-12 v1

Abstract

Functional programming typically emphasizes programming with first-class functions and immutable data. Immutable data types enable fault tolerance in distributed systems, and ensure process isolation in message-passing concurrency, among other applications. However, beyond the distinction between reassignable and non-reassignable fields, Scala's type system does not have a built-in notion of immutability for type definitions. As a result, immutability is "by-convention" in Scala, and statistics about the use of immutability in real-world Scala code are non-existent. This paper reports on the results of an empirical study on the use of immutability in several medium-to-large Scala open-source code bases, including Scala's standard library and the Akka actor framework. The study investigates both shallow and deep immutability, two widely-used forms of immutability in Scala. Perhaps most interestingly, for type definitions determined to be mutable, explanations are provided for why neither the shallow nor the deep immutability property holds; in turn, these explanations are aggregated into statistics in order to determine the most common reasons for why type definitions are mutable rather than immutable.

Keywords

Cite

@article{arxiv.1704.03095,
  title  = {Quantifying and Explaining Immutability in Scala},
  author = {Philipp Haller and Ludvig Axelsson},
  journal= {arXiv preprint arXiv:1704.03095},
  year   = {2017}
}

Comments

In Proceedings PLACES 2017, arXiv:1704.02418

R2 v1 2026-06-22T19:13:33.139Z