The widespread diffusion of the Java technology has encouraged the birth of new programming languages on the Java Virtual Machine, languages that brings new features to the Java environment, most of which taken from the functional paradigm. Kawa is an implementation of the programming language Scheme on the Java Virtual Machine. As a Scheme it provides a functional style of programming, dynamic typing, and meta-programming facilities. However, being the Java Virtual Machine devoid of stack manipulation primitives, Kawa lacks of one of the most peculiar Scheme features: First-class continuations. This dissertation describes an implementation of the call/cc control operator in the Kawa compiler. In particular it shows how the exception handling feature, common to many programming languages, can be exploited to implement first-class continuations in an environment without stack manipulation primitives, and how this can be realised in a real compiler. This thesis also shows how first-class continuations and control operators like call/cc can be used to introduce concurrency features and to implement new control flow constructs in programming languages.

La grande diffusione della tecnologia Java ha favorito la nascita di nuovi linguaggi di programmazione per la Java Virtual Machine, linguaggi che offrono nuove funzionalità all'ecosistema Java, la maggior parte dei quali ispirati dal paradigma di programmazione funzionale. Kawa è una implementazione del di linguaggio di programmazione Scheme pel la Java Virtual Machine. Come ogni implementazione di Scheme esso fornisce uno stile funzionale di programmazione, tipizzazione dinamica, e strumenti per la metaprogrammazione. Tuttavia, essendo la Java Virtual Machine priva di primitive per la manipolazione diretta dello stack, Kawa manca di una delle caratteristiche più peculiari di Scheme: le continuazioni di prima classe. Questa tesi descrive un'implementazione dell'operatore di controllo call/cc all'interno del compilatore Kawa. In particolare si mostra come la gestione delle eccezioni, comune a molti linguaggi di programmazione, può essere sfruttata per implementare le continuazioni di prima classe in un ambiente senza primitive di manipolazione dello stack, e come questo può essere messo in pratica in un vero compilatore. Si mostra anche in questa trattazione come le continuazioni di prima classe e gli operatori di controllo come la call/cc possono essere usate per introdurre concorrenza e nuovi strutture di controllo nei linguaggi di programmazione.

First class continuations on the Java virtual machine : an implementation within the Kawa scheme compiler

BERNARDINI, ANDREA
2014/2015

Abstract

The widespread diffusion of the Java technology has encouraged the birth of new programming languages on the Java Virtual Machine, languages that brings new features to the Java environment, most of which taken from the functional paradigm. Kawa is an implementation of the programming language Scheme on the Java Virtual Machine. As a Scheme it provides a functional style of programming, dynamic typing, and meta-programming facilities. However, being the Java Virtual Machine devoid of stack manipulation primitives, Kawa lacks of one of the most peculiar Scheme features: First-class continuations. This dissertation describes an implementation of the call/cc control operator in the Kawa compiler. In particular it shows how the exception handling feature, common to many programming languages, can be exploited to implement first-class continuations in an environment without stack manipulation primitives, and how this can be realised in a real compiler. This thesis also shows how first-class continuations and control operators like call/cc can be used to introduce concurrency features and to implement new control flow constructs in programming languages.
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-lug-2015
2014/2015
La grande diffusione della tecnologia Java ha favorito la nascita di nuovi linguaggi di programmazione per la Java Virtual Machine, linguaggi che offrono nuove funzionalità all'ecosistema Java, la maggior parte dei quali ispirati dal paradigma di programmazione funzionale. Kawa è una implementazione del di linguaggio di programmazione Scheme pel la Java Virtual Machine. Come ogni implementazione di Scheme esso fornisce uno stile funzionale di programmazione, tipizzazione dinamica, e strumenti per la metaprogrammazione. Tuttavia, essendo la Java Virtual Machine priva di primitive per la manipolazione diretta dello stack, Kawa manca di una delle caratteristiche più peculiari di Scheme: le continuazioni di prima classe. Questa tesi descrive un'implementazione dell'operatore di controllo call/cc all'interno del compilatore Kawa. In particolare si mostra come la gestione delle eccezioni, comune a molti linguaggi di programmazione, può essere sfruttata per implementare le continuazioni di prima classe in un ambiente senza primitive di manipolazione dello stack, e come questo può essere messo in pratica in un vero compilatore. Si mostra anche in questa trattazione come le continuazioni di prima classe e gli operatori di controllo come la call/cc possono essere usate per introdurre concorrenza e nuovi strutture di controllo nei linguaggi di programmazione.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2015_07_Bernardini.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 2.14 MB
Formato Adobe PDF
2.14 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/108685