Über Technologie, Naturwissenschaften und Lernen
Betreuer: Dr. Sam Lindley
(gewann den MSc Informatics Dissertation Prize)
Der Fokus dieser Arbeit liegt auf mehreren Verbesserungen von Frank, einer Programmiersprache, die algebraische Effekte und Effekt-Handler als Kernfunktionalität unterstützt. Effekte dienen als Schnittstellen zwischen anfordernden und verarbeitenden Komponenten und bieten dem Programmierer somit ein modulares und leistungsfähiges Mittel zur Abstraktion.
Wir verbessern die Ausdrucksstärke von Befehlen, indem wir sie polymorph machen. Zusammen mit einer Erweiterung von ML-ähnlichen Referenzen können wir das gewonnene Potenzial demonstrieren, indem wir zwei Nebenläufigkeitsmodelle (Aktoren, Promises) in Frank implementieren.
Ein herausragendes Merkmal von Frank ist die ambient ability, die eine bequeme Komposition von Effekt-Generatoren und Effekt-Handlern ermöglicht. Wir diskutieren verschiedene Kompositionsszenarien und identifizieren ein Problem mit dazwischenliegenden Effekten, die unbeabsichtigt offengelegt werden. Wir lösen einen Teil des Problems und diskutieren, wie das allgemeinere Szenario gelöst werden kann.
Ein weiteres herausragendes Merkmal von Frank sind Multihandler, die die gleichzeitige Verarbeitung mehrerer Effekte ermöglichen. Bisher wurde eine dynamische Semantik dieses Settings über eine Übersetzung in ein Setting mit unären Handlern gegeben. Wir geben eine operationale Small-Step-Semantik, die direkter und näher an der tatsächlichen Implementierung ist. Darüber hinaus beweisen wir die Typsicherheit der erweiterten Frank-Version.