Results 11  20
of
23
Three Nondeterminism Analyses in a ParallelFunctional Language
, 2001
"... This paper is an extension of a previous work where two nondeterminism analyses were presented. The first of them was efficient (linear) but not very powerful and the second one was more powerful but very expensive (exponential). Here, we develop an intermediate analysis in both aspects, efficiency ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
This paper is an extension of a previous work where two nondeterminism analyses were presented. The first of them was efficient (linear) but not very powerful and the second one was more powerful but very expensive (exponential). Here, we develop an intermediate analysis in both aspects, efficiency and power. The improvement in efficiency is obtained by speeding up the fixpoint calculation by means of a widening operator, and the representation of functions through easily comparable signatures. Also details about the implementation and its cost are given. Additionally: (1) the second and third analyses are completed with polymorphism, (2) we prove that the domains in the second and third analyses form a category in which the morphisms are embeddingclosure pairs of functions; respectively called abstraction and concretisation functions; and (3) we formally relate the analyses and prove that the first analysis is a safe approximation to the third one and that the third one is a safe approximation to the second one. In this way the three analyses become totally ordered by increasing cost and precision. 1
Handling Exceptions in Haskell
 In submitted to Practial Applications of Declarative Languages (PADL'99
, 1999
"... Using a language without exception handling is like driving a car with no brakes and no seatbelt  things work fine until something goes wrong. You also learn to drive rather carefully. This paper describes an exception handling extension to the Haskell lazy functional language. The implementation ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
Using a language without exception handling is like driving a car with no brakes and no seatbelt  things work fine until something goes wrong. You also learn to drive rather carefully. This paper describes an exception handling extension to the Haskell lazy functional language. The implementation turned out to be very easy but we had problems finding a viable semantics for our system. The resulting semantics is a compromise between theoretical beauty and practical utility. 1 Introduction Haskell is an ivory tower language: full of lofty ideas, built on solid semantic foundations, praised by greybearded professors and about as much use in the real world as a chocolate teapot. For Haskell to emerge from the ivory tower, it must be possible to write the kinds of programs that less idealistic programmers can write in C, Java, Ada and other useful languages: programs that interact with the real world in interesting ways (using graphics, GUIs, databases, etc) and which are robust enough...
Two NonDeterminism Analyses in Eden
, 2000
"... Nondeterminism may affect the referential transparency of the programs written in Eden: If a nondeterministic expression is evaluated in different processes, the variable it is bound to it will denote possibly different values. It would be desirable to warn the programmer about this situation, or t ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Nondeterminism may affect the referential transparency of the programs written in Eden: If a nondeterministic expression is evaluated in different processes, the variable it is bound to it will denote possibly different values. It would be desirable to warn the programmer about this situation, or to force the evaluation of such an expression so that all the occurrences of the variable have the same value. Additionally there exist sequential transformations that are incorrect when nondeterminism is involved. Such transformations should be applied only to those parts of the program that are sure to be deterministic. In this paper several analyses of different efficiency and power are presented. Several techniques are used: A types annotation system and abstract interpretation. 1 Introduction The parallelfunctional language Eden extends the lazy functional language Haskell by syntactic constructs to explicitly define and communicate processes. The three main new concepts are process a...
Implementing Declarative Parallel BottomAvoiding Choice
 IN 14TH SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING
, 2002
"... Nondeterministic choice supports efficient parallel speculation, but unrestricted nondeterminism destroys the referential transparency of purelydeclarative languages by removing unfoldability and it bears the danger of wasting resources on unncessary computations. While numerous choice mechanisms ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Nondeterministic choice supports efficient parallel speculation, but unrestricted nondeterminism destroys the referential transparency of purelydeclarative languages by removing unfoldability and it bears the danger of wasting resources on unncessary computations. While numerous choice mechanisms have been proposed that preserve unfoldability, and some concurrent implementations exist, we believe that no compiled parallel implementation has previously been constructed. This paper presents the design, semantics, implementation and use of a family of bottomavoiding choice operators for Glasgow parallel Haskell. The subtle semantic properties of our choice operations are described, including a careful classification using an existing framework, together with a discussion of operational semantics issues and the pragmatics of distributed memory implementation. The expressiveness of our choice operators is demonstrated by constructing a branch and bound search, a merge and a speculative conditional. Their effectiveness is demonstrated by comparing the parallel performance of the speculative search with naive and 'perfect' implementations. Their efficiency is assessed by measuring runtime overhead and heap consumption.
A Comparison between three Nondeterminism Analyses in ParallelFunctional Language
 IN PRIMERAS JORNADAS SOBRE PROGRAMACION Y LENGUAJES, PROLE'01
, 2001
"... The paper compares three analyses to determine when an Eden expression is sure to be deterministic, and when it may be nondeterministic. This work extends ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The paper compares three analyses to determine when an Eden expression is sure to be deterministic, and when it may be nondeterministic. This work extends
Nondeterminism in the APM methodology
 In SFP'99  Scottish Functional Programming Workshop
, 1999
"... This paper looks at the issues involved in incorporating nondeterminism into functional languages and particularly in representing the nondeterminacy which may arise in representing parallel programs in a functional language. It presents an implementation which does so without breaking the abili ..."
Abstract
 Add to MetaCart
This paper looks at the issues involved in incorporating nondeterminism into functional languages and particularly in representing the nondeterminacy which may arise in representing parallel programs in a functional language. It presents an implementation which does so without breaking the ability to perform equational reasoning, and shows how it may be incorporated into the APM (Abstract Parallel Machines) methodology for deriving parallel programs [5]. 1 Introduction Nondeterminism occurs when a program can choose between two or more values and this choice is not fixed in advance. It may be constrained under certain conditions, leading to different types of nondeterminism. One common area in which nondeterminism may occur is in parallel programming. This is because processors may execute independently and messages can be sent asynchronously. Here nondeterminism arises from the parallelism itself. The programmer may be unaware of it, and, although it may be useful, it may cau...
On the representation of McCarthy’s ambin the πcalculus
, 2004
"... We study the encoding of λ [] , the call by name λcalculus enriched with McCarthy’s amb operator, into the πcalculus. Semantically, amb is a challenging operator, for the fairness constraints that it expresses. We prove that, under a certain interpretation of divergence in the λcalculus (weak div ..."
Abstract
 Add to MetaCart
We study the encoding of λ [] , the call by name λcalculus enriched with McCarthy’s amb operator, into the πcalculus. Semantically, amb is a challenging operator, for the fairness constraints that it expresses. We prove that, under a certain interpretation of divergence in the λcalculus (weak divergence), a faithful encoding is impossible. However, with a different interpretation of divergence (strong divergence), the encoding is possible, and for this case we derive results and coinductive proof methods to reason about λ [] that are similar to those for the encoding of pure λcalculi. We then use these methods to derive the most important laws concerning amb. We take bisimilarity as behavioural equivalence on the πcalculus, which sheds some light on the relationship between fairness and bisimilarity.
A Partial Rehabilitation of SideEffecting I/O: NonDeterminism in NonStrict Functional Languages
, 1996
"... We investigate the extension of nonstrict functional languages like Haskell or Clean by a nondeterministic interaction with the external world. Using callbyneed and a natural semantics which describes the reduction of graphs, this can be done such that the ChurchRosser Theorems 1 and 2 hold. Ou ..."
Abstract
 Add to MetaCart
We investigate the extension of nonstrict functional languages like Haskell or Clean by a nondeterministic interaction with the external world. Using callbyneed and a natural semantics which describes the reduction of graphs, this can be done such that the ChurchRosser Theorems 1 and 2 hold. Our operational semantics is a base to recognise which particular equivalencies are preserved by program transformations. The amount of sequentialisation may be smaller than that enforced by other approaches, and the programming style is closer to the common one of sideeffecting programming. However, not all program transformations used by an optimising compiler for Haskell remain correct in all contexts. Our result can be interpreted as a possibility to extend current I/Omechanism by nondeterministic memoryless function calls. For example, this permits a call to a random number generator. Adding memoryless function calls to monadic I/O is possible and has a potential to extend the Haskell I...
Specification and Refinement of Functional Programs
, 1994
"... This paper only deals with laws about expressions with one dummy. ..."
Optimizing Eden by program transformation
"... Eden is a parallel extension of Haskell allowing the programmer to explicitly specify which expressions must be evaluated as parallel processes. Eden is implemented by modifying the Glasgow Haskell Compiler (GHC). This decision has saved a lot of work but has also produced some drawbacks: Some optim ..."
Abstract
 Add to MetaCart
Eden is a parallel extension of Haskell allowing the programmer to explicitly specify which expressions must be evaluated as parallel processes. Eden is implemented by modifying the Glasgow Haskell Compiler (GHC). This decision has saved a lot of work but has also produced some drawbacks: Some optimizing transformations done by GHC are not convenient for Eden, either because they spoil its semantics or because they negatively affect its efficiency. The paper explains how to circumvent these drawbacks and also how to add our own optimizing analysis and transformation steps in order to generate a (correct and) better parallel code.