Scala with Explicit Nulls
dc.contributor.author | Nieto Rodriguez, Abel | |
dc.date.accessioned | 2019-12-20T21:32:47Z | |
dc.date.available | 2019-12-20T21:32:47Z | |
dc.date.issued | 2019-12-20 | |
dc.date.submitted | 2019-12-13 | |
dc.description.abstract | The Scala programming language unifies the object-oriented and functional styles of programming. One common source of errors in Scala programs is null references. In this dissertation, I present a modification to the Scala type system that makes nullability explicit in the types. This allows us to turn runtime errors into compile-time errors. I have implemented this design for explicit nulls as a fork of the Dotty (Scala 3) compiler. I evaluate the design by migrating a number of Scala libraries to use explicit nulls. In the second part of the dissertation, I give a theoretical foundation for explicit nulls. I do this in two, independent ways. First, I give a denotational semantics for type nullification, a key part of the explicit nulls design. Separately, I present a core calculus for null interoperability that models how languages with explicit nulls (like Scala) interact with languages where null remains implicit (like Java). Using the concept of blame from gradual typing, I show that if a well-typed program fails with certain kinds of nullability errors, an implicitly-nullable subterm can always be blamed for the failure. | en |
dc.identifier.uri | http://hdl.handle.net/10012/15364 | |
dc.language.iso | en | en |
dc.pending | false | |
dc.publisher | University of Waterloo | en |
dc.relation.uri | https://github.com/abeln/dotty | en |
dc.subject | programming languages | en |
dc.subject | type systems | en |
dc.subject | scala | en |
dc.subject | nullability | en |
dc.subject | gradual typing | en |
dc.subject | denotational semantics | en |
dc.subject | compilers | en |
dc.title | Scala with Explicit Nulls | en |
dc.type | Master Thesis | en |
uws-etd.degree | Master of Mathematics | en |
uws-etd.degree.department | David R. Cheriton School of Computer Science | en |
uws-etd.degree.discipline | Computer Science | en |
uws-etd.degree.grantor | University of Waterloo | en |
uws.contributor.advisor | Lhoták, Ondřej | |
uws.contributor.affiliation1 | Faculty of Mathematics | en |
uws.peerReviewStatus | Unreviewed | en |
uws.published.city | Waterloo | en |
uws.published.country | Canada | en |
uws.published.province | Ontario | en |
uws.scholarLevel | Graduate | en |
uws.typeOfResource | Text | en |
Files
Original bundle
1 - 1 of 1
Loading...
- Name:
- NietoRodriguez_Abel.pdf
- Size:
- 857.91 KB
- Format:
- Adobe Portable Document Format
- Description:
- Master thesis
License bundle
1 - 1 of 1
No Thumbnail Available
- Name:
- license.txt
- Size:
- 6.08 KB
- Format:
- Item-specific license agreed upon to submission
- Description: