Results 1 
6 of
6
The Polymorphic Picalculus: Theory and Implementation
, 1995
"... We investigate whether the πcalculus is able to serve as a good foundation for the design and implementation of a stronglytyped concurrent programming language. The first half of the dissertation examines whether the πcalculus supports a simple type system which is flexible enough to provide a su ..."
Abstract

Cited by 112 (0 self)
 Add to MetaCart
We investigate whether the πcalculus is able to serve as a good foundation for the design and implementation of a stronglytyped concurrent programming language. The first half of the dissertation examines whether the πcalculus supports a simple type system which is flexible enough to provide a suitable foundation for the type system of a concurrent programming language. The second half of the dissertation considers how to implement the πcalculus efficiently, starting with an abstract machine for πcalculus and finally presenting a compilation of πcalculus to C. We start the dissertation by presenting a simple, structural type system for πcalculus, and then, after proving the soundness of our type system, show how to infer principal types for πterms. This simple type system can be extended to include useful typetheoretic constructions such as recursive types and higherorder polymorphism. Higherorder polymorphism is important, since it gives us the ability to implement abstract datatypes in a typesafe manner, thereby providing a greater degree of modularity for πcalculus programs. The functional computational paradigm plays an important part in many programming languages. It is wellknown that the πcalculus can encode functional computation. We go further and show that the type structure of λterms is preserved by such encodings, in the sense that we can relate the type of a λterm to the type of its encoding in the πcalculus. This means that a πcalculus programming language can genuinely support typed functional programming as a special case. An efficient implementation of πcalculus is necessary if we wish to consider πcalculus as an operational foundation for concurrent programming. We first give a simple abstract machine for πcalculus and prove it correct. We then show how this abstract machine inspires a simple, but efficient, compilation of πcalculus to C (which now forms the basis of the Pict programming language implementation).
Functional Computation as Concurrent Computation
, 1995
"... We investigate functional computation as a special form of concurrent computation. ..."
Abstract

Cited by 13 (3 self)
 Add to MetaCart
We investigate functional computation as a special form of concurrent computation.
Recursive Types in Games: Axiomatics and Process Representation (Extended Abstract)
 IN PROCEEDINGS O.F LICS'98. IEEE COMPUTER
, 1998
"... This paper presents two basic results on gamebased semantics of FPC, a metalanguage with sums, products, exponentials and recursive types. First we give an axiomatic account of the category of games G introduced in [15], offering a fundamental structural analysis of the category as well as a transp ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
This paper presents two basic results on gamebased semantics of FPC, a metalanguage with sums, products, exponentials and recursive types. First we give an axiomatic account of the category of games G introduced in [15], offering a fundamental structural analysis of the category as well as a transparent way to prove computational adequacy. As a consequence we obtain an intensional fullabstraction result through a standard definability argument. Next we extend the category G by introducing a category of games G i with optimised strategies; we show that the denotational semantics in G i gives a compilation of FPC terms into core Pict codes (the asynchronous polyadic calculus without summation). The process representation follows a pioneering idea of Hyland and Ong [18]. However, we advance their representation by introducing semantically wellfounded optimisation techniques; we also exte...
A Parallel Functional Language Compiler for MessagePassing Multicomputers
, 1998
"... The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subs ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subset being compiled. Naira has been successfully parallelised and it is the largest successfully parallelised Haskell program having achieved good absolute speedups on a network of SUN workstations. Having the same basic structure as other production compilers of functional languages, Naira's parallelisation technology should carry forward to other functional language compilers. The back end of Naira is written in C and generates parallel code in the C language which is envisioned to be run on distributedmemory machines. The code generator is based on a novel compilation scheme specified using a restricted form of Milner's ßcalculus which achieves asynchronous communication. We present the f...
Interpreting functions as πcalculus processes: a tutorial
, 1999
"... This paper is concerned with the relationship betweencalculus and ��calculus. Thecalculus talks about functions and their applicative behaviour. This contrasts with the ��calculus, that talks about processes and their interactive behaviour. Application is a special form of interaction, and there ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
This paper is concerned with the relationship betweencalculus and ��calculus. Thecalculus talks about functions and their applicative behaviour. This contrasts with the ��calculus, that talks about processes and their interactive behaviour. Application is a special form of interaction, and therefore functions can be seen as a special form of processes. We study how the functions of thecalculus (the computable functions) can be represented as ��calculus processes. The ��calculus semantics of a language induces a notion of equality on the terms of that language. We therefore also analyse the equality among functions that is induced by their representation as ��calculus processes. This paper is intended as a tutorial. It however contains some original contributions. The main ones are: the use of wellknown Continuation Passing Style transforms to derive the encodings into ��calculus and prove their correctness; the encoding of typedcalculi.
A Process Semantics for Functional Programming
"... The semantics of lazy functional programming languages is usually presented in two different ways: a semantics based on trees which is used to reason about a program; and a semantics based on graphs which is used to implement a program. The link between these semantics is often unclear. We present a ..."
Abstract
 Add to MetaCart
(Show Context)
The semantics of lazy functional programming languages is usually presented in two different ways: a semantics based on trees which is used to reason about a program; and a semantics based on graphs which is used to implement a program. The link between these semantics is often unclear. We present a process semantics for functional programming which has a number of interesting properties. Firstly it is structured in such a way that the relationship between the tree and graph semantics is clear. Secondly, it captures the main requirements of functional programming by incorporating laziness, cycles and strictness. Lastly, there is a simple formal correspondence between this semantics and other operational presentations. 1 Introduction The semantics of a lazy functional programming language may be characterized in two ways. Firstly, terms may be considered to be trees which are evaluated using a leftmostoutermost reduction (or callbyname) strategy until they are in weak head normal fo...