Scala中不可变性的量化与解释
编程语言
2017-04-12 v1
摘要
函数式编程通常强调使用一等函数和不可变数据进行编程。不可变数据类型在分布式系统中实现容错,并在消息传递并发中确保进程隔离,此外还有其它应用。然而,除了可重赋值与不可重赋值字段之间的区别外,Scala 的类型系统对于类型定义并没有内置的不可变性概念。因此,在 Scala 中不可变性是“按约定”的,并且关于现实世界 Scala 代码中使用不可变性的统计资料尚不存在。本文报告了一项关于在若干中大型 Scala 开源代码库(包括 Scala 标准库和 Akka actor 框架)中不可变性使用的实证研究的结果。该研究考察了浅不可变性与深不可变性,这两种 Scala 中广泛使用的不可变性形式。或许最有趣的是,对于被确定为可变的类型定义,提供了为何浅不可变性与深不可变性性质均不成立的原因解释;进而,这些解释被汇总为统计资料,以确定类型定义为可变而非不可变的最常见原因。
引用
@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}
}
备注
In Proceedings PLACES 2017, arXiv:1704.02418