2000 character limit reached
Simple Reference Immutability for System F-sub (2307.04960v1)
Published 11 Jul 2023 in cs.PL
Abstract: Reference immutability is a type based technique for taming mutation that has long been studied in the context of object-oriented languages, like Java. Recently, though, languages like Scala have blurred the lines between functional programming languages and object oriented programming languages. We explore how reference immutability interacts with features commonly found in these hybrid languages, in particular with higher-order functions -- polymorphism -- and subtyping. We construct a calculus System F-sub-M which encodes a reference immutability system as a simple extension of F-sub and prove that it satisfies the standard soundness and immutability safety properties.
- The essence of dependent object types. A List of Successes That Can Change the World: Essays Dedicated to Philip Wadler on the Occasion of His 60th Birthday (2016), 249–272.
- Engineering Formal Metatheory. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Francisco, California, USA) (POPL ’08). Association for Computing Machinery, New York, NY, USA, 3–15. https://doi.org/10.1145/1328438.1328443
- Origins of the D Programming Language. Proc. ACM Program. Lang. 4, HOPL, Article 73 (jun 2020), 38 pages. https://doi.org/10.1145/3386323
- An Extension of System F with Subtyping. In Theoretical Aspects of Computer Software, International Conference TACS ’91, Sendai, Japan, September 24-27, 1991, Proceedings (Lecture Notes in Computer Science, Vol. 526), Takayasu Ito and Albert R. Meyer (Eds.). Springer, 750–770. https://doi.org/10.1007/3-540-54415-1_73
- Generic Universe Types. In ECOOP 2007 – Object-Oriented Programming, Erik Ernst (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 28–53.
- Views: Compositional Reasoning for Concurrent Programs. SIGPLAN Not. 48, 1 (jan 2013), 287–300. https://doi.org/10.1145/2480359.2429104
- Vlastimil Dort and Ondřej Lhoták. 2020. Reference Mutability for DOT. In 34th European Conference on Object-Oriented Programming (ECOOP 2020) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 166), Robert Hirschfeld and Tobias Pape (Eds.). Schloss Dagstuhl–Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 18:1–18:28. https://doi.org/10.4230/LIPIcs.ECOOP.2020.18
- Mattias Felleisen and D. P. Friedman. 1987. A Calculus for Assignments in Higher-Order Languages. In Proceedings of the 14th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (Munich, West Germany) (POPL ’87). Association for Computing Machinery, New York, NY, USA, 314. https://doi.org/10.1145/41625.41654
- A Theory of Type Qualifiers. In Proceedings of the ACM SIGPLAN 1999 Conference on Programming Language Design and Implementation (Atlanta, Georgia, USA) (PLDI ’99). Association for Computing Machinery, New York, NY, USA, 192–203. https://doi.org/10.1145/301618.301665
- Uniqueness and Reference Immutability for Safe Parallelism. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 21–40. https://doi.org/10.1145/2384616.2384619
- Philipp Haller and Ludvig Axelsson. 2017. Quantifying and Explaining Immutability in Scala. Electronic Proceedings in Theoretical Computer Science 246 (apr 2017), 21–27. https://doi.org/10.4204/eptcs.246.5
- ReIm and ReImInfer: Checking and Inference of Reference Immutability and Method Purity. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 879–896. https://doi.org/10.1145/2384616.2384680
- Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23, 3 (may 2001), 396–450. https://doi.org/10.1145/503502.503505
- Fabian Muehlboeck and Ross Tate. 2018. Empowering Union and Intersection Types with Integrated Subtyping. Proc. ACM Program. Lang. 2, OOPSLA, Article 112 (oct 2018), 29 pages. https://doi.org/10.1145/3276482
- John C. Reynolds. 1997. Design of the Programming Language Forsythe. Birkhäuser Boston, Boston, MA, 173–233. https://doi.org/10.1007/978-1-4612-4118-8_9
- Chaperones and Impersonators: Run-Time Support for Reasonable Interposition. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 943–962. https://doi.org/10.1145/2384616.2384685
- Bjarne Stroustrup. 2007. The C++ programming language - special edition (3. ed.). Addison-Wesley.
- Matthew S. Tschantz and Michael D. Ernst. 2005. Javari: Adding Reference Immutability to Java. SIGPLAN Not. 40, 10 (oct 2005), 211–230. https://doi.org/10.1145/1103845.1094828
- Object and Reference Immutability Using Java Generics. In Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering (Dubrovnik, Croatia) (ESEC-FSE ’07). Association for Computing Machinery, New York, NY, USA, 75–84. https://doi.org/10.1145/1287624.1287637