Results 1  10
of
25
Reflections on Standard ML
 FUNCTIONAL PROGRAMMING, CONCURRENCY, SIMULATION AND AUTOMATED REASONING, VOLUME 693 OF LNCS
, 1992
"... Standard ML is one of a number of new programming languages developed in the 1980s that are seen as suitable vehicles for serious systems and applications programming. It offers an excellent ratio of expressiveness to language complexity, and provides competitive efficiency. Because of its type an ..."
Abstract

Cited by 198 (4 self)
 Add to MetaCart
Standard ML is one of a number of new programming languages developed in the 1980s that are seen as suitable vehicles for serious systems and applications programming. It offers an excellent ratio of expressiveness to language complexity, and provides competitive efficiency. Because of its type and module system, Standard ML manages to combine safety, security, and robustness with much of the flexibility of dynamically typed languages like Lisp. It is also has the most welldeveloped scientific foundation of any major language. Here I review the strengths and weaknesses of Standard ML and describe some of what we have learned through the design, implementation, and use of the language.
Modern Concurrency Abstractions for C#
 ACM TRANS. PROGRAM. LANG. SYST
, 2002
"... Polyphonic C# is an extension of the C# language with new asynchronous concurrency constructs, based on the join calculus. We describe the design and implementation of the language and give examples of its use in addressing a range of concurrent programming problems. ..."
Abstract

Cited by 127 (2 self)
 Add to MetaCart
Polyphonic C# is an extension of the C# language with new asynchronous concurrency constructs, based on the join calculus. We describe the design and implementation of the language and give examples of its use in addressing a range of concurrent programming problems.
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 94 (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).
Implicit typing `a la ML for the joincalculus
 Proceedings of the 8th International Conference on Concurrency Theory, volume 1243 of Lecture Notes in Computer Science
, 1997
"... We adapt the DamasMilner typing discipline to the joincalculus. The main result is a new generalization criterion that extends the polymorphism of ML to joindefinitions. We prove the correctness of our typing rules with regard to a chemical semantics. We also relate typed extensions of the core j ..."
Abstract

Cited by 47 (12 self)
 Add to MetaCart
We adapt the DamasMilner typing discipline to the joincalculus. The main result is a new generalization criterion that extends the polymorphism of ML to joindefinitions. We prove the correctness of our typing rules with regard to a chemical semantics. We also relate typed extensions of the core joincalculus to functional languages. 1 Introduction The distributed implementation of concurrent calculi with message passing raises the problem of implementing communication channels, which finally reduces to the specification of channel managers. In order to reflect this need in the language itself, a new formalism has been recently introduced : the joincalculus [2]. This calculus is similar to Milner's asynchronous ßcalculus, except that the operations of restriction, reception and replication are all combined into a single receptor definition. Such a combination yields better control over communication. In [2, 3], we relied on this locality property to model realistic distributed sys...
JoCaml: A language for concurrent distributed and mobile programming
 In Advanced Functional Programming
"... Abstract. In these lecture notes, we give an overview of concurrent, distributed, and mobile programming using JoCaml. JoCaml is an extension of the Objective Caml language. It extends OCaml with support for concurrency and synchronization, the distributed execution of programs, and the dynamic relo ..."
Abstract

Cited by 29 (0 self)
 Add to MetaCart
Abstract. In these lecture notes, we give an overview of concurrent, distributed, and mobile programming using JoCaml. JoCaml is an extension of the Objective Caml language. It extends OCaml with support for concurrency and synchronization, the distributed execution of programs, and the dynamic relocation of active program fragments during execution. The programming model of JoCaml is based on the join calculus. This model is characterized by an explicit notion of locality, a strict adherence to local synchronization, and a natural embedding of functional programming à la ML. Local synchronization means that messages always travel to a set destination, and can interact only after they reach that destination; this is required for an efficient asynchronous implementation. Specifically, the join calculus uses ML’s function bindings and patternmatching on messages to express local synchronizations. The lectures and lab sessions illustrate how to use JoCaml to program
Systematic Realisation of Control Flow Analyses for CML
 In Proceedings of ICFP'97
, 1997
"... We present a methodology for the systematic realisation of control flow analyses and illustrate it for Concurrent ML. We start with an abstract specification of the analysis that is next proved semantically sound with respect to a traditional smallstep operational semantics; this result holds for t ..."
Abstract

Cited by 18 (8 self)
 Add to MetaCart
We present a methodology for the systematic realisation of control flow analyses and illustrate it for Concurrent ML. We start with an abstract specification of the analysis that is next proved semantically sound with respect to a traditional smallstep operational semantics; this result holds for terminating as well as nonterminating programs. The analysis is defined coinductively and it is shown that all programs have a least analysis result (that is indeed the best one). To realise the analysis we massage the specification in three stages: (i) to explicitly record reachability of subexpressions, (ii) to be defined in a syntaxdirected manner, and (iii) to generate a set of constraints that subsequently can be solved by standard techniques. We prove equivalence results between the different versions of the analysis; in particular it follows that the least solution to the constraints generated will be the least analysis result also to the initial specification. 1 Introduction Many c...
Basic Observables for Processes
 Information and Computation
, 1999
"... A general approach for defining behavioural preorders over process terms as the maximal precongruences induced by basic observables is examined. Three different observables, that provide information about the initial communication capabilities of processes and about the possibility that processes ..."
Abstract

Cited by 14 (5 self)
 Add to MetaCart
A general approach for defining behavioural preorders over process terms as the maximal precongruences induced by basic observables is examined. Three different observables, that provide information about the initial communication capabilities of processes and about the possibility that processes get engaged in divergent computations, will be considered. We show that the precongruences induced by our basic observables coincide with intuitive and/or widely studied behavioural preorders. In particular, we retrieve in our setting the must preorder of De Nicola and Hennessy and the fair/should preorder introduced by Cleaveland and Natarajan and by Brinksma, Rensink and Vogler. A new form of testing preorder, which we call safemust, also emerges. The alternative characterizations we offer shed light on the differences between these preorders, and on the role played in their definition by tests for divergence. 1 Introduction In the classical theory of functional programming, the point...
Reactive Objects in a Functional Language  An escape from the evil "I"
, 1997
"... We present an extension to Haskell which supports reactive, concurrent programming with objects, sans the problematic blocking input. We give a semantics together with a number of programming examples, and show an implementation based on a preprocessor and a library implementing seven monadic consta ..."
Abstract

Cited by 10 (4 self)
 Add to MetaCart
We present an extension to Haskell which supports reactive, concurrent programming with objects, sans the problematic blocking input. We give a semantics together with a number of programming examples, and show an implementation based on a preprocessor and a library implementing seven monadic constants. 1 Introduction With the advent of Haskell 1.3 the monadic I/O model has become well established [PH96]. At the top level, a Haskell program is now a sequence of imperative commands that transforms a state consisting of the real world and/or some program state into a final configuration. In a pure state transformational approach, carrying a monolithic program state around is likely to complicate modular design; however, this problem can to a large extent be circumvented by introducing firstclass references in the monadic framework [LJ94]. Taken together, these additions make the resulting Haskell programs  on the top level at least  more and more reminiscent of programs written i...
Explicit Message Passing for Concurrent Clean
 Proc. of Implementation of Functional Languages, IFL'98
, 1998
"... . In this paper we look at Concurrent Clean and concurrency and notice that the language has some shortcomings with respect to communication. It does not provide nondeterminism, efficient multicasting and datadriven communication. A message passing extension for Concurrent Clean is proposed which ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
. In this paper we look at Concurrent Clean and concurrency and notice that the language has some shortcomings with respect to communication. It does not provide nondeterminism, efficient multicasting and datadriven communication. A message passing extension for Concurrent Clean is proposed which provides efficient manytomany communication. In contrast to other solutions, we chose to have an asynchronous system where sending and receiving do not have to occur simultaneously. We discuss design decisions with respect to concurrent evaluation and unique messages. Furthermore, we show some implementation aspects of this message passing system. 1 Introduction An important topic in computer science is concurrency. It is getting more attention nowadays with the introduction of shared memory machines, like multiPentium computers. For these systems, concurrency is often provided through a library which enables the programmer to create processes or threads and have communication between the...