Pizza
Pizza was a short-lived experimental version of Java developed in the early 2000s. It extended Java by adding
- generics (parametric polymorphism)
- function pointers (first-class functions]
- class cases and pattern matching (algebraic types]
The designs of Pizza strongly argued that the usual process of down-casting should be replaced by parametric polymorphism. Most of the work on that eventually influenced the design of Java generics, and ultimately Scala.
References
@inproceedings{10.1145/263699.263715,
author = {Odersky, Martin and Wadler, Philip},
title = {Pizza into Java: Translating Theory into Practice},
year = {1997},
isbn = {0897918533},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/263699.263715},
doi = {10.1145/263699.263715},
booktitle = {Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
pages = {146–159},
numpages = {14},
location = {Paris, France},
series = {POPL '97}
}