Read-only types and purity for DOT
Typy pouze pro čtení a čisté metody pro DOT kalkulus
dizertační práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/195221Identifikátory
SIS: 177096
Kolekce
- Kvalifikační práce [11214]
Autor
Vedoucí práce
Oponent práce
Dietl, Werner
Haller, Philipp
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika - Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
25. 9. 2024
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Prospěl/a
Klíčová slova (česky)
typové systémy|závislé typy|DOT kalkulus|čisté metody|proměnlivost referencíKlíčová slova (anglicky)
type systems|dependent types|DOT calculus|reference mutability|purityPopulární objektově-orientované programovací jazyky jako Java nebo Scala typicky dovolují měnit objekty přiřazením nových hodnot do jejich datových položek. Zároveň je však běžné psát kód, který k objektům přistupuje pouze pro čtení. Technika Reference mutability (měnitelnost referencí) umožňuje omezit změny objektů tím, že pomocí typů rozlišuje reference na ty, které jsou pouze pro čtení, a ty, které umožňují objekt měnit. Pro jazyk Java byla tato technika již podrobně rozvinuta a existuje implementace ve formě rozšíření pro kompilátor. Scala je programovací jazyk, který se stále rozvíjí a do svého typového systému integruje mnoho pokročilých vlastností, z nichž nejpříznačnější jsou typy závislé na cestě (path-dependent types). Protože komplexnost těchto vlastností vzbuzuje obavy o možnost vzniku porušení typové bezpečnosti (type soundness), existuje formální kalkulus Dependent Object Types (DOT), který formálně dokazuje bezpečnost základních vlastností typového systému jazyka Scala. Tato práce se věnuje možnosti využití vlastností DOT kalkulu pro integraci systému reference mutability. Přinášíme definici kalkulu roDOT, který je založen na variantě DOT kalkulu s proměnlivými objekty, a který reprezentuje měnitelnost reference pomocí speciálního vnořeného typu (type member). Toto kódování umožňuje využít...
Mainstream object-oriented programming languages, such as Java or Scala, typically allow objects to be mutated by assigning new values to their fields, but it is also common to write code that only accesses objects in a read-only way. Reference mutability is a tech- nique for controlling mutation by distinguishing read-only and mutable references with types. It has been thoroughly studied in Java, and implemented as compiler extensions. Scala is an evolving programming language which integrates many advanced type system features, most notably path-dependent types. To address questions about soundness, the formal Dependent Object Types (DOT) calculus has been developed, which provides a formal proof of soundness for the core of Scala's type system. In this thesis, we explore the possibility of using DOT's features to integrate reference mutability. We define the roDOT calculus, which is based on a version of DOT with mu- table fields, and encodes the mutability of object references using a special type member. This encoding makes it possible to use path dependent types to refer to mutability of a reference, and use intersection and union types to combine mutabilities and implement viewpoint adaptation, ensuring the transitive property of read-only references. In addi- tion to updating the type soundness...