Some Measurements of Nullable and Non-Nullable Parameter Declarations in Relation to Software Malleability
William Harrison, Tim Walsh, Paul Biggar

TL;DR
This paper explores how nullability declarations in programming languages can enhance software malleability by enabling more flexible method call models, supported by empirical analysis of existing software practices.
Contribution
It introduces a novel perspective on nullability declarations, linking them to increased software malleability and examines their prevalence in current software systems.
Findings
Nullability declarations are common in existing software.
Non-nullable parameters often appear in methods, enabling flexible method call models.
Nullability information can significantly improve software adaptability.
Abstract
The usual advantages put forward for including nullability declarations in the type systems of programming languages are that they improve program reliability or performance. But there is another, entirely different, reason for doing so. In the right context, this information enables the software artifacts we produce, the objects and methods, to exhibit much greater malleability. For declaratively typed languages, we can obtain greater software malleability by extending the model of method call so that assurance of a method's availability can be provided by any non-nullable parameter, not simply the target parameter, and by allowing the method's implementation to reside in classes or objects other than the target.. This paper examines the question of whether this hypothetical improvement in software malleability is consistent with existing programming practice by examining the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Advanced Software Engineering Methodologies
